|
|
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
svnvlad, та можно и не системный если действительно пул нужен. нарукоблудить или лучше спионерить где готовый ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 16:52:28 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
svnvladА пример не покажете, что за системный пул потоков и как с ним работать?Лучше всего для понимания начать отсюда Также можно найти в инете использование на делфи. Ну и если есть наши сырцы, можешь глянуть dxThreading.pas - правда лучше актуальный. Раньше была ошибка, на 40-ядерном процессоре отваливалось - мой косяк был ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 17:00:03 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
white_niggerна 40 -ядерном процессорефигасебе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 17:15:10 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
КвейдфигасебеУвы. На 32-ядерном всё работало ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 17:45:09 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
white_niggerYuRock.к. этот специальный механизм не всегда работоспособен, не говоря уже о его тормознутости и ограниченности. Обсуждалось уже много раз, снова не хочется. Про какие велосипеды ты говоришь - не совсем понятно только. Работа с окнами идет через сообщения, посылаемые ф-циями Send/PostMessage. Синхронизация между потоками достигается логикой архитектуры программы и, если надо, объектами синхронизации. Всё, точка. Никак не кривыми костылями.Если ты не умеешь готовить кошек - это не значит что они невкусные. Подтяни матчасть по TThread, там не только Synchronize. А ты подтяни не знаю, что, и скажи, что будет, когда потоки, созданные тобою, вызовут Synchronize, а в основном потоке в это время 1. Не был вызван Application.Run 2. При обработке какого-то сообщения через цикл из Application.Run (например в Button1Click) был создан еще один цикл обработки сообщений, например, GetMessage, WaitMessage или MsgWaitForMultiplyObjects+PeekMessage и крутится себе, всё обрабатывает, закончится тогда-то и тогда-то, когда нужно будет. И если твой ответ будет правильным, то он будет таков: "Они все намертво повиснут в лучшем случае до того момента, пока что-то не случится, при чем это что-то никоим образом не относится к синхронизации данных, доступ к которым ты пытаешься синхронизировать". Хочешь разгребать подобные проблемы? Вперед. Это первое. Второе. Метод синхронизации данных через очередь (хотя в данном случае это не через очередь, Synchronize - это глючный костыль к очереди, вот Send/PostMessage - это через очередь) нужен тогда, когда он нужен. И больше никогда. Синхронизировать данные всегда через очередь - мега-убогий способ, т.к. все ждут каждого, даже если это не требуется. А через очередь главного потока - супер-мега-убогий, ибо все ждут еще и окончания обработки в потоке очереди и других сообщений, не требующих вообще никакой синхронизации, а она может занимать, скажем мягко, некоторое время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 17:57:18 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
YuRock, Поток сознания какой-то, всё в кучу сгрёб... PS: Можно и детородный орган сломать если не понимаешь что делаешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:04:31 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
YuRockчто будет, когда потоки, созданные тобою, вызовут Synchronize, а в основном потоке в это время 1. Не был вызван Application.Run 2. При обработке какого-то сообщения через цикл из Application.Run (например в Button1Click) был создан еще один цикл обработки сообщений, например, GetMessage, WaitMessage или MsgWaitForMultiplyObjects+PeekMessage и крутится себе, всё обрабатывает, закончится тогда-то и тогда-то, когда нужно будет. Ну не все же без VCL пишут, верно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:08:47 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
schiYuRockчто будет, когда потоки, созданные тобою, вызовут Synchronize, а в основном потоке в это время 1. Не был вызван Application.Run 2. При обработке какого-то сообщения через цикл из Application.Run (например в Button1Click) был создан еще один цикл обработки сообщений, например, GetMessage, WaitMessage или MsgWaitForMultiplyObjects+PeekMessage и крутится себе, всё обрабатывает, закончится тогда-то и тогда-то, когда нужно будет. Ну не все же без VCL пишут, верно ? Вторая ситуация - как раз для VCL. Одна из изюминок VCL, в которой еще и окно модальное закрыть невозможно по похожим причинам в данном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:17:44 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
white_niggerПоток сознания какой-то, всё в кучу сгрёб... Понятно. К счастью, я не пользуюсь твоими библиотеками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:18:15 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
YuRockПонятно. К счастью, я не пользуюсь твоими библиотеками.Как дальше жить? Можно распускать DevExpress... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:20:58 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
white_niggerPS: Можно и детородный орган сломать если не понимаешь что делаешь Похоже, ты не понимаешь, что делаешь, раз пользуешься таким. (если не пользуешься - зачем советовать другим тогда - вредительство одно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:21:58 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
YuRockschiпропущено... Ну не все же без VCL пишут, верно ? Вторая ситуация - как раз для VCL. Одна из изюминок VCL, в которой еще и окно модальное закрыть невозможно по похожим причинам в данном случае. Если я тебя правильно понял, то во время отображения модального окна в основном попытка вызвать из другого потока Synchronize приведет к невозможности закрыть модальное окно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:23:00 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
модальность в VCL изначально кривая и самописная. почему вместо Win нужно было городить свой огород, тайна покрытая мраком... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:29:01 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
schi, В этом случае нет, потому-что цикл, запускаемый при показе VCL-ного модального окна, обрабатывает Idle, который вызывает Synchronize. Но никто не застрахован от не-VCL-ных циклов обработки сообщений. Я о другом говорил. Если есть открытое модальное окно (VCL-ное), и при этом запустить свой цикл GetMessage/WaitMessage/MsgWaitForMultiplyObjects, то закрыть это окно будет невозможно (оно закроется только при окончании этого цикла). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:38:25 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
schi, А, кстати, если вызвать VCL-ное модальное окно из dll (наверно даже из bpl), то тогда тоже никакие Synchronize не выполнятся. Будут висеть, пока не закроется модальное окно)) Т.к. список Synchronize-функций для выполнения в оконной процедуре в dll пустой)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:42:36 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
YuRockЕсли есть открытое модальное окно (VCL-ное), и при этом запустить свой цикл GetMessage/WaitMessage/MsgWaitForMultiplyObjects, то закрыть это окно будет невозможно (оно закроется только при окончании этого цикла). Как бы модальное оно на то и модальное, чтобы своих циклов не запускать. Но причем тут Лужков Syncronize ? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:42:39 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
YuRockschi, А, кстати, если вызвать VCL-ное модальное окно из dll (наверно даже из bpl), то тогда тоже никакие Synchronize не выполнятся. Будут висеть, пока не закроется модальное окно)) Т.к. список Synchronize-функций для выполнения в оконной процедуре в dll пустой)) Из BPL вряд ли. А с DLL довольно много хитростей и без межмодульных вызовов, потому что глобальные переменные начинают размножаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:44:33 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
schiКак бы модальное оно на то и модальное, чтобы своих циклов не запускать. Он может быть запущен в любом месте программы, при любом событии. Главное - чтоб из цикла, запущенного при открытии этого "модального" окна (а так и будет, когда оно открыто и является верхним). schiНо причем тут Лужков Syncronize ? :) Похожая проблема. А еще 20861970 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:47:13 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
schiИз BPL вряд ли. А с DLL довольно много хитростей и без межмодульных вызовов, потому что глобальные переменные начинают размножаться. Про bpl я не утверждаю - не знаю, как там всё работает. А в dll я хитростей не вижу. Глобальные переменные те же. Ну, некоторые разные, конечно, типа Application.MainForm, но я ж не пользуюсь таким) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 18:53:56 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
YuRockА в dll я хитростей не вижу. Глобальные переменные те же. Ну, некоторые разные, конечно, типа Application.MainForm, но я ж не пользуюсь таким) Разные они, разные... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 21:21:37 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
white_niggerРазные они, разные... Их значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 21:34:10 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
YuRockИх значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю.Крут! А а не в курсе, что у кучи народа масса проблем с этим, особенно в части VCL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 22:05:25 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
YuRockwhite_niggerРазные они, разные... Их значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю. Не значения разные, а сами они разные. Например, эта в classes.pas в dll отличается от одноименной в classes.pas exe : Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 22:10:20 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
schi, ну понятно, что полностью одинаковые у них только названия) Но и значения у многих тоже. Например, CurrencyStr, версия ОС и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2017, 23:59:11 |
|
||
|
Как с помощью Post-сообщений заставить программу отображать надписи.
|
|||
|---|---|---|---|
|
#18+
white_niggerYuRockИх значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю.Крут! А а не в курсе, что у кучи народа масса проблем с этим, особенно в части VCL?Откуда же мне это знать. У кучи людей и с Synchronize проблем масса, и вообще с VCL, да и вообще с компьютерами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2017, 00:01:03 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39534966&tid=2041727]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
74ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 278ms |
| total: | 436ms |

| 0 / 0 |
