
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.02.2021, 12:20
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
Есть процедура, которая работает с VCL. К этой процедуре обращается несколько потоков. Вопрос такой, нужно обязательно заключать в TThread.Synchronize() вызов самой процедуры внутри потоков или же можно заключить в TThread.Synchronize() только нужный участок кода в уже вызываемой процедуре? То есть будет ли правильно работать такой код: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 13:03
|
|||
|---|---|---|---|
|
|||
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
Как удобней, так и делай. Принципиальной разницы нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 13:04
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
garun, Лучше вообще без синхронайз логику построить. Пусть поток независимо занимается работой, можно обновлять какие-то общие данные-результаты для отображения. А морда независимо что-то показывает. Иногда что-то берет из общих данных-результатов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 13:05
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
YuRock garun, Лучше вообще без синхронайз логику построить. Пусть поток независимо занимается работой, можно обновлять какие-то общие данные-результаты для отображения. А морда независимо что-то показывает. Иногда что-то берет из общих данных-результатов. Лучше по таймеру в основном потоке проверять результаты расчетов и выводить что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 13:06
|
|||
|---|---|---|---|
|
|||
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
YuRock garun, Лучше вообще без синхронайз логику построить. Пусть поток независимо занимается работой, можно обновлять какие-то общие данные-результаты для отображения. А морда независимо что-то показывает. Иногда что-то берет из общих данных-результатов. + Слать из рабочих потоков форме сообщения и забыть про синхронайз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 13:07
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
garun, по твоему коду правильнее так Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 14:07
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
Zelius, "Правильнее" почему? Чем отличается работа моего кода от вашего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 14:13
|
|||
|---|---|---|---|
|
|||
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
Fr0sT-Brutal Как удобней, так и делай. Принципиальной разницы нет ...только треды начинают работать по очереди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 14:15
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
ъъъъъ, Это однопоточная многопоточность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 14:29
|
|||
|---|---|---|---|
|
|||
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
rgreat ъъъъъ, Это однопоточная многопоточность. Корпоративная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 16:13
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
garun "Правильнее" почему? Чем отличается работа моего кода от вашего? по хелпу , отличается одним вызовом и личными предпочтениями ) а так по сути тоже самое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 16:51
|
|||
|---|---|---|---|
|
|||
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
ъъъъъ Fr0sT-Brutal Как удобней, так и делай. Принципиальной разницы нет ...только треды начинают работать по очереди. У него Job в середине цикла вызывается, судя по "..." перед и после, значит, здесь все нормально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.02.2021, 17:01
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
Fr0sT-Brutal У него Job в середине цикла вызывается, судя по "..." перед и после, значит, здесь все нормально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2021, 12:22
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
rgreat Особенно все будет "нормально" если основной поток висит где-нибудь на каком-нибудь ShowMessage или ином диалог боксе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2021, 13:18
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
alekcvp, А теперь представь что это Queue вызывается допустим N раз в секунду, а юзер открыл какой-то диалог и ушел. Вопрос 1: Что будет, если юзер закроет диалог весьма не скоро, а в очереди накопится огромное кол-во вызовов синхронизированной процедуры? Вопрос 2: Через сколько времени в ОС кончатся ресурсы и все упадет, если юзер так и не закроет диалог? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2021, 13:45
|
|||
|---|---|---|---|
|
|||
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
rgreat А теперь представь что это Queue вызывается допустим N раз в секунду, а юзер открыл какой-то диалог и ушел. Модальное окно не блокирует обработку Queue/Synchoronize ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2021, 14:10
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
_Vasilisk_ Модальное окно не блокирует обработку Queue/Synchoronize Но тогда выбери сам любую другую причину длительной занятости главного потока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2021, 14:25
|
|||
|---|---|---|---|
|
|||
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
rgreat Но тогда выбери сам любую другую причину длительной занятости главного потока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2021, 14:26
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
_Vasilisk_ rgreat А теперь представь что это Queue вызывается допустим N раз в секунду, а юзер открыл какой-то диалог и ушел. Модальное окно не блокирует обработку Queue/Synchoronize ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2021, 14:33
|
|||
|---|---|---|---|
|
|||
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
YuRock Даже если это модальное окно вызвалось из Queue/Synchoronize? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2021, 14:47
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
_Vasilisk_, Если инициатор обновлений гуя сам главный поток, а результаты расчета другие потоки обновляют в промежуточном контейнере (в куче) - то не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2021, 15:00
|
|||
|---|---|---|---|
|
|||
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
rgreat Если инициатор обновлений гуя сам главный поток, Я знаю решение: в главном потоке вместо GetMessage использовать MsgWaitForMultipleObjects, а из вычислителя дергать SetEvent. Но в VCL такое не прикрутишь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2021, 15:00
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
rgreat alekcvp, А теперь представь что это Queue вызывается допустим N раз в секунду, а юзер открыл какой-то диалог и ушел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.02.2021, 15:01
|
|||
|---|---|---|---|
Работа с потоками. Вопрос по синхронизации |
|||
|
#18+
_Vasilisk_, Да. По таймеру в процессе расчетов. Имхо так надежней и безопасней чем через sendmessage. Ну и это кроссплатформенно, как бонус. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2037599]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
167ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 199ms |
| total: | 472ms |

| 0 / 0 |
