|
|
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
В классе есть процедуры, некоторые из них выполняются по таймеру. Всё вместе подгружает основной поток, что делать? Для каждой процедуры создавать поток? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2018, 22:48 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Error554Для каждой процедуры создавать поток? Или для каждой процедуры поток. Или один поток на все процедуры. Телепаты в отпуске, никто не знает что у тебя за процедуры и зачем им таймер. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2018, 23:14 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Error554, Выхода два: 1. Оптимизировать эти процедуры, чтобы они не грузили поток, в котором выполняются; 2. Запускать их в не основном потоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 01:07 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Я недавно в программировании, dll и bpl(как я понял улучшенный аналог длл для работы с классами) выполняются в отдельном потоке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 08:34 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Error554dll и bpl(как я понял улучшенный аналог длл для работы с классами) выполняются в отдельном потоке? Нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 08:46 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
попробуй почитать туториалы по OmniThreadLibrary библиотека расчитанная на создание многопоточных программ в терминах "потоков данных", а не "потоков управления". может быть это то, что тебе нужно. заводишь несколько конвейеров, для разных типов данных, вешаешь на них свои сложные процедуры, и в основном потоке просто забрасываешь им во входные буфера кадры с данными и иногда снимаешь с выходных готовые. но вообще, многопоточность - требует понимания и строгости. В частности твои "сложные процедуры" ,если ты их выносишь в отдельный поток, должны выполняться внутри себя и не лезть в основную программу. Должны быть черными ящиками, получил ВСЕ нужные данные, обработал, вернул результат. Никаких там окошек с ошибками, запросов у пользователя настроек и прочего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 12:57 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Можешь почитать беседы с дрyгим новичком. https://stackoverflow.com/questions/39096452 https://stackoverflow.com/questions/39153277 https://stackoverflow.com/questions/39580539 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:00 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
AriochНикаких там окошек с ошибками, запросов у пользователя настроек и прочего. можно и с ними, но в контексте Ariochмногопоточность - требует понимания и строгости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:01 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
а вообще в яндексе до хрена туториалов. http://www.delphi-manual.ru/threads.php http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1370 http://www.delphiplus.org/articles/delphi/multi-threads_programs.html https://habrahabr.ru/post/152025/ https://habrahabr.ru/post/144681/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:02 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
В яндексе вбейте в поиск "asynccalls taskex". Можно прямо по коду часть работы убрать в отдельный поток. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:02 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Докможно и с ними, но в контексте вот именно. поэтому первое правило - НЕЛЬЗЯ вот когда чайник немножко встанет не крыло, можно переходить к исключениям из обзщего правила. а потом он может быть до гуру дорастёт и весь VCL на фиберы перепишет. но - потом. а пока - нельзя. сначала - правила, потом - исключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:03 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Кстати, да. AsyncCalls как очень простой OTL тоже всеьма неплох. Был когда-то. До 2010 года. А сейчас есть стандартные TThread.Queue и TThread.CreateAnonymousThread - в общем они перекрывают AsyncCalls во многом, если не во всем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:09 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Arioch, авторно вообще, многопоточность - требует понимания и строгости. Глобально в многпоточности одна сложность - синхронизация между разными потоками. Как дополнительными так и основным. Почти любой код можно запихнуть в доп. поток или потоки, часто с минимальным переписыванием. Добавил либу для распараллеливания, она не такая тяжеловесная, как омни. Можно посмотреть в строну TJvThread из жедаев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:21 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Всем спасибо большое за ответы! Сейчас буду читать, изучать. Но прежде хотелось бы задать ещё один вопрос (возможно тупой), как посмотреть кол-во запущенный потоков в программе и желательно видеть их загрузку цп, может есть какая то программа? По поводоу "кол-во запущенный потоков в программе", видел в инете можно самому код написать и узнать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:37 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
1) самa Delphi во время выполнения программы список показывает - иди в меню View - debug windows - threads 2) Windows 7 (или 8, не помню) и до неё - SysInternals.com Process Explorer 3) Windows 8 (или 10, не помню) - Майкрософт купила SysInternals и функции P.E. появились в обычном диспетчере задач, Ctrl+Shift+Esc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:41 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
makhaonне такая тяжеловесная, как омни Омни монстровата, не отнять. Но если у тебя много данных, то вообще переключения мозга в режим (думаем о данных и их обработке) из режима (думаем о процедурах и циклах) сильно упрощает жизнь. А если у тебя мало данных - то зачем тебе многопоточность? и новые классовые функции TThread на 99% достаточны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:45 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Только не удивляйся если у своего процесса увидишь больше потоков, чем ожидаешь. Виндовс - гадкий вирус, она внедряет в чужие процессы свои собственные потоки с целями неясными. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:45 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
makhaonДобавил либу для распараллеливания, она не такая тяжеловесная, как омни. Можно посмотреть в строну TJvThread из жедаев. вот еще однофайловый готовый менеджер потоков :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 13:50 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Прелесть той библиотеки в том, что она позволяет распараллелить куски кода по ходу выполнения. Проще всего - циклы (другие куски нужно в циклы превращать). Есть какой-то долгий цикл, поменяли одну строку кода, собственно, цикл, он уже обрабатывается параллельно (если данные, конечно, лежат как нужно). На самом деле - очень удобно. Я у себя счетные задачи и загрузку файлов ускоряю. Разница по скорости огромная (i7). Я, честно, сам не ожидал, думал в память 'упрётся', но нет, 4 ядра + ht дают примерно 6-7 кратное ускорение. От задачи, конечно, зависит. Если нужно именно параллельное выполнение с основным потоком, то эта либа не подходит, увы. Либо обычный TThread, либо TJvThread, либо wadman'овская компонента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 14:18 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
makhaonпозволяет распараллелить куски кода по ходу выполнения. Проще всего - циклы (другие куски нужно в циклы превращать) Т.е. - параллельный цикл. http://otl.17slon.com/book/chap04.html#highlevel-foreach http://www.thedelphigeek.com/2010/06/omnithreadlibrary-20-sneak-preview-1.html Также http://otl.17slon.com/book/chap04.html#highlevel-join ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 14:41 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Arioch, а потом он может быть до гуру дорастёт и весь VCL на фиберы перепишет. Есть руководства по фиберам (Fiber)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 14:58 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
makhaonЕсли нужно именно параллельное выполнение с основным потоком, то эта либа не подходит, увы. + win only ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 14:58 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Error554, Начни с изучения предметной области, а НЕ с библиотек, и даже не со стандартного TThread. Что такое поток (ЧЕГО поток) и так далее. Пойми, почему нельзя бездумно использовать одни ресурсы в разных потоках. Поймешь - узнай, что нужно делать для того, чтобы использовать одни ресурсы в разных потоках (если уж очень надо такое использование). Как и за счет чего потоки могут ждать друг друга (если это требуется). Как ведет себя операционка при старте/завершении потока, что вообще происходит при этом. Внимательно изучи документацию разработчика операционки по функции старта потока. И еще много всякой теории. Потом можно начинать пробовать (стандартный TThread или библиотеку - не важно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 15:47 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
ziv-2014, нет, был только чей-то проект у кого-то в блоге это ведь надо переписывать ВЕСЬ VCL потом ВСЕ сторонние компоненты-библиотеки для VCL потом ВСЕ мало-мальски сложные программы тут "за три урока для чайника" не напишешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 16:08 |
|
||
|
Работа класса грузит основной поток
|
|||
|---|---|---|---|
|
#18+
Arioch, это ведь надо переписывать ВЕСЬ VCL потом ВСЕ сторонние компоненты-библиотеки для VCL потом ВСЕ мало-мальски сложные программы Да что-нибудь базовое основы :) В indy10 нашел реализацию fibers. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2018, 17:12 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39595659&tid=2041269]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 526ms |

| 0 / 0 |
