|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman Самое простое общение между основным и доп.потоком - через сообщения PostMessage. А я бы лучше посоветовал https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Generics.Collections.TThreadedQueue Не зависит от ОС. Да и нет ничего хуже, чем "забить" спамом систему сообщений. Так можно и винду подвесить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 11:16 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Ну или связку обычного TQueue + TCriticalSection. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 11:21 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
rgreat Не зависит от ОС. а чем отличается от обычного потока? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 11:52 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
rgreat Да и нет ничего хуже, чем "забить" спамом систему сообщений. Так можно и винду подвесить. Я эту сказку много лет слышу, но ни разу с таким не сталкивался на практике. Как и с теми, кто тоже с этим сталкивался. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:24 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman, Лично сталкивался. Но не в своем ПО. Давно правда было. Может с тех пор пофиксили. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:25 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 а чем отличается от обычного потока? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:26 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
rgreat Да и нет ничего хуже, чем "забить" спамом систему сообщений. Так можно и винду подвесить. Лимит 10т на поток, дальше будет отлуп. Периодически случается, если обработка тормозит. Ничего страшного, даже на другие потоки процесса не влияет. Но своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от таймера, например) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:27 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
rgreat Лично сталкивался. Но не в своем ПО. 10000 сообщений закинуть и не обработать? Это нужно быть тотальным рукожопом. Но не свое ПО наверняка не имеет названия, либо им нельзя светить? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:30 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Fr0sT-BrutalНо своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от таймера, например) ....и поэтому не может применяться в GUI потоке. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:35 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman, Да я не помню подробностей уже. Давно было. Win2000 и все такое. Винда начинала тупить просто недетски, даже старый таск мэнаджер. При этом загрузка CPU минимальна. Тупило явно там где требуется обработка сообщений, они просто не проходили вовремя. Что за ПО ломало винду сейчас уже и не помню. Помню что причина была найдена в перегрузке системы сообщений ОС. Вроде по системным евентам нашли. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 12:47 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Fr0sT-BrutalНо своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от таймера, например) ....и поэтому не может применяться в GUI потоке. однако в VCL своя очередь вполне успешно применяется, и этому есть причины, и они всё более актуальны ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:23 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
kealon(Ruslan)однако в VCL своя очередь вполне успешно применяется, и этому есть причины Да. Рукожопость её архитектора, решившего впихнуть невпихуемое и запрячь в одну телегу GUI, консоль и сервисы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:27 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Опосля то оно каждый решение найдёт. Построить архитектуру до появления проблем, которые она должна решать, довольно сложно. А эта архитектура, хоть и с заплатками, выдержала все хаки, которые появились в ОС. Более того, микрософт фактически скопипастила эту архитектуру (I/O Completion Ports). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 13:35 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Fr0sT-BrutalНо своя очередь более удобна, если не нужно обрабатывать виндовые сообщения (от таймера, например) ....и поэтому не может применяться в GUI потоке. Если только совместно, но да, в GUI потоке особо смысла в ней нет - очередь уже есть, выборка тоже, т.е. вся обвязка, которая требуется для заведения виндовой очереди в фоновых потоках, уже готова. Даже case MsgRec.message и прочие апишные кишки не нужно делать - спасибо механизму procedure MsgFoo(var msg: TFooMsg); message MSG_FOO; ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 14:57 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
wadman 10000 сообщений закинуть и не обработать? Это нужно быть тотальным рукожопом. Но не свое ПО наверняка не имеет названия, либо им нельзя светить? У меня бывает, если запрос к базе сурово висит. Тогда механизм очистки не успевает сработать, и лимит исчерпывается. Еще остается странный баг в потоке файловой записи при ||-ном запуске архиватора - 7зип как-то уж очень жестоко тормозит хард, хотя и странно, что прям настолько, чтобы запись одного кб длилась несколько минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 15:01 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 wadman Mizer73, три простых правила для начинающего многопоточника: 1. Никаких synchronize 2. Никаких Application.ProcessMessages 3. Никаких обращений к визуальной части из других потоков Самое простое общение между основным и доп.потоком - через сообщения PostMessage. по-быстрому ничего не нашел про postmessage/ а какие еще варианты есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 16:55 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Mizer73 wadman Mizer73, три простых правила для начинающего многопоточника: 1. Никаких synchronize 2. Никаких Application.ProcessMessages 3. Никаких обращений к визуальной части из других потоков Самое простое общение между основным и доп.потоком - через сообщения PostMessage. по-быстрому ничего не нашел про postmessage/ а какие еще варианты есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 17:11 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
YuRock обновлять глобальную переменную через критическую секцию, а в главном потоке - через нее же читать эту переменную по таймеру. Читать-то зачем через критическую секцию? Если читать только для того, чтобы прочитать, не надо себя ограничивать. Вот если читать для того, чтобы по результату обновить, а-ля транзакция, тогда, конечно, да. И заключить в скобки всю транзакцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 17:34 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
shalamyanskyЧитать-то зачем через критическую секцию? Затем, что, судя по соседнему топику, у него там TStringList и надо быть уверенным, что он не исчезнет и не поменяется в процессе чтения. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 17:44 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov у него там TStringList и надо быть уверенным, что он не исчезнет и не поменяется в процессе чтения. А... Ну, если чтение не атомарное, тогда, конечно, да... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 18:34 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov shalamyanskyЧитать-то зачем через критическую секцию? Затем, что, судя по соседнему топику, у него там TStringList и надо быть уверенным, что он не исчезнет и не поменяется в процессе чтения.дык у TStringList (и иже с ними) есть встроенные методы блокирования модификации. а вот если он ещё и сам исчезнуть может, то ой! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 18:46 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Мимопроходящийа вот если он ещё и сам исчезнуть может, то ой! Первый принцип параноидальной многопоточности: исчезнуть может всё, что не прибито гвоздями к полу. И что-то я не помню блокировок в самом TStringList... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 18:55 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Fr0sT-Brutal У меня бывает, если запрос к базе сурово висит. Тогда механизм очистки не успевает сработать, и лимит исчерпывается. 10000 сообщений в очереди. Все висят. Этим не хвастаться нужно, а исправлять. Отправлять запросы в другой поток и ждать ответа и между делом работать с очередью. Когда я понимал, что в очереди 100 сообщений висят, то этого было достаточно для понимания, что проблема не в очередях. 10000 сообщений, Карл! Этого мало. :( Тут и своя очередь не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 21:08 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov shalamyanskyЧитать-то зачем через критическую секцию? Затем, что, судя по соседнему топику, у него там TStringList и надо быть уверенным, что он не исчезнет и не поменяется в процессе чтения. TStringList - это попытки разные... уже и этого нет. сделал обмен через структуру Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
один фиг... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 21:48 |
|
виснет экранная форма
|
|||
---|---|---|---|
#18+
Итого... что же все-таки тормозит процесс? Почему внутрянка, прогресс-бар, и иже с ними - все прекрассно работает, а на проц добавляется немного нагрузки и отрисовка окон начинает тормозить капитально. Что на это влияет? Еще никто не высказал мысль, кроме того, что общаться из потока с VCL из основной формы - плохо. Почему плохо, что там не подтирается? Почему открываю окошко, а там видна только рамка контура и буковки с текстовыми полями, а под ним торчит то,Ю что было под ним на форме, и все это накладывается друг на друга, фон окошка не закрашивается. вот главный вопрос. что тормозить начинает? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.10.2021, 21:55 |
|
|
start [/forum/topic.php?fid=58&msg=40107330&tid=2036886]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 277ms |
total: | 419ms |
0 / 0 |