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

start [/forum/topic.php?fid=58&msg=40046154&tid=2037599]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 483ms |

| 0 / 0 |
