powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как с помощью Post-сообщений заставить программу отображать надписи.
25 сообщений из 50, страница 2 из 2
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534850
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvlad, та можно и не системный если действительно пул нужен. нарукоблудить или лучше спионерить где готовый
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534860
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svnvladА пример не покажете, что за системный пул потоков и как с ним работать?Лучше всего для понимания начать отсюда Также можно найти в инете использование на делфи. Ну и если есть наши сырцы, можешь глянуть dxThreading.pas - правда лучше актуальный. Раньше была ошибка, на 40-ядерном процессоре отваливалось - мой косяк был
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534875
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerна 40 -ядерном процессорефигасебе
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534905
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КвейдфигасебеУвы. На 32-ядерном всё работало
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534927
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerYuRock.к. этот специальный механизм не всегда работоспособен, не говоря уже о его тормознутости и ограниченности. Обсуждалось уже много раз, снова не хочется.
Про какие велосипеды ты говоришь - не совсем понятно только. Работа с окнами идет через сообщения, посылаемые ф-циями Send/PostMessage.
Синхронизация между потоками достигается логикой архитектуры программы и, если надо, объектами синхронизации. Всё, точка. Никак не кривыми костылями.Если ты не умеешь готовить кошек - это не значит что они невкусные. Подтяни матчасть по TThread, там не только Synchronize.
А ты подтяни не знаю, что, и скажи, что будет, когда потоки, созданные тобою, вызовут Synchronize, а в основном потоке в это время

1. Не был вызван Application.Run
2. При обработке какого-то сообщения через цикл из Application.Run (например в Button1Click) был создан еще один цикл обработки сообщений, например, GetMessage, WaitMessage или MsgWaitForMultiplyObjects+PeekMessage и крутится себе, всё обрабатывает, закончится тогда-то и тогда-то, когда нужно будет.

И если твой ответ будет правильным, то он будет таков: "Они все намертво повиснут в лучшем случае до того момента, пока что-то не случится, при чем это что-то никоим образом не относится к синхронизации данных, доступ к которым ты пытаешься синхронизировать".

Хочешь разгребать подобные проблемы? Вперед.

Это первое. Второе.
Метод синхронизации данных через очередь (хотя в данном случае это не через очередь, Synchronize - это глючный костыль к очереди, вот Send/PostMessage - это через очередь) нужен тогда, когда он нужен. И больше никогда.
Синхронизировать данные всегда через очередь - мега-убогий способ, т.к. все ждут каждого, даже если это не требуется. А через очередь главного потока - супер-мега-убогий, ибо все ждут еще и окончания обработки в потоке очереди и других сообщений, не требующих вообще никакой синхронизации, а она может занимать, скажем мягко, некоторое время.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534940
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,
Поток сознания какой-то, всё в кучу сгрёб...

PS: Можно и детородный орган сломать если не понимаешь что делаешь
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534941
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockчто будет, когда потоки, созданные тобою, вызовут Synchronize, а в основном потоке в это время

1. Не был вызван Application.Run
2. При обработке какого-то сообщения через цикл из Application.Run (например в Button1Click) был создан еще один цикл обработки сообщений, например, GetMessage, WaitMessage или MsgWaitForMultiplyObjects+PeekMessage и крутится себе, всё обрабатывает, закончится тогда-то и тогда-то, когда нужно будет.


Ну не все же без VCL пишут, верно ?
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534949
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiYuRockчто будет, когда потоки, созданные тобою, вызовут Synchronize, а в основном потоке в это время

1. Не был вызван Application.Run
2. При обработке какого-то сообщения через цикл из Application.Run (например в Button1Click) был создан еще один цикл обработки сообщений, например, GetMessage, WaitMessage или MsgWaitForMultiplyObjects+PeekMessage и крутится себе, всё обрабатывает, закончится тогда-то и тогда-то, когда нужно будет.


Ну не все же без VCL пишут, верно ?
Вторая ситуация - как раз для VCL. Одна из изюминок VCL, в которой еще и окно модальное закрыть невозможно по похожим причинам в данном случае.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534950
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerПоток сознания какой-то, всё в кучу сгрёб...
Понятно. К счастью, я не пользуюсь твоими библиотеками.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534954
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockПонятно. К счастью, я не пользуюсь твоими библиотеками.Как дальше жить? Можно распускать DevExpress...
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534955
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerPS: Можно и детородный орган сломать если не понимаешь что делаешь
Похоже, ты не понимаешь, что делаешь, раз пользуешься таким. (если не пользуешься - зачем советовать другим тогда - вредительство одно)
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534956
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockschiпропущено...


Ну не все же без VCL пишут, верно ?
Вторая ситуация - как раз для VCL. Одна из изюминок VCL, в которой еще и окно модальное закрыть невозможно по похожим причинам в данном случае.

Если я тебя правильно понял, то во время отображения модального окна в основном попытка вызвать из другого потока Synchronize приведет к невозможности закрыть модальное окно ?
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534957
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модальность в VCL изначально кривая и самописная.
почему вместо Win нужно было городить свой огород,
тайна покрытая мраком...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534962
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schi,

В этом случае нет, потому-что цикл, запускаемый при показе VCL-ного модального окна, обрабатывает Idle, который вызывает Synchronize.
Но никто не застрахован от не-VCL-ных циклов обработки сообщений.

Я о другом говорил. Если есть открытое модальное окно (VCL-ное), и при этом запустить свой цикл GetMessage/WaitMessage/MsgWaitForMultiplyObjects, то закрыть это окно будет невозможно (оно закроется только при окончании этого цикла).
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534966
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schi,

А, кстати, если вызвать VCL-ное модальное окно из dll (наверно даже из bpl), то тогда тоже никакие Synchronize не выполнятся. Будут висеть, пока не закроется модальное окно)) Т.к. список Synchronize-функций для выполнения в оконной процедуре в dll пустой))
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534967
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockЕсли есть открытое модальное окно (VCL-ное), и при этом запустить свой цикл GetMessage/WaitMessage/MsgWaitForMultiplyObjects, то закрыть это окно будет невозможно (оно закроется только при окончании этого цикла).

Как бы модальное оно на то и модальное, чтобы своих циклов не запускать. Но причем тут Лужков Syncronize ? :)
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534972
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockschi,

А, кстати, если вызвать VCL-ное модальное окно из dll (наверно даже из bpl), то тогда тоже никакие Synchronize не выполнятся. Будут висеть, пока не закроется модальное окно)) Т.к. список Synchronize-функций для выполнения в оконной процедуре в dll пустой))

Из BPL вряд ли. А с DLL довольно много хитростей и без межмодульных вызовов, потому что глобальные переменные начинают размножаться.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534976
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiКак бы модальное оно на то и модальное, чтобы своих циклов не запускать.
Он может быть запущен в любом месте программы, при любом событии. Главное - чтоб из цикла, запущенного при открытии этого "модального" окна (а так и будет, когда оно открыто и является верхним).
schiНо причем тут Лужков Syncronize ? :)
Похожая проблема. А еще 20861970
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39534979
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiИз BPL вряд ли. А с DLL довольно много хитростей и без межмодульных вызовов, потому что глобальные переменные начинают размножаться.
Про bpl я не утверждаю - не знаю, как там всё работает.
А в dll я хитростей не вижу. Глобальные переменные те же. Ну, некоторые разные, конечно, типа Application.MainForm, но я ж не пользуюсь таким)
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535043
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockА в dll я хитростей не вижу. Глобальные переменные те же. Ну, некоторые разные, конечно, типа Application.MainForm, но я ж не пользуюсь таким) Разные они, разные...
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535049
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerРазные они, разные...
Их значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535061
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockИх значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю.Крут! А а не в курсе, что у кучи народа масса проблем с этим, особенно в части VCL?
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535062
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRockwhite_niggerРазные они, разные...
Их значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю.

Не значения разные, а сами они разные. Например, эта в classes.pas в dll отличается от одноименной в classes.pas exe :

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
{ SyncEvent is an Event handle that is signaled every time a thread wishes to
  synchronize with the main thread or is terminating.  This handle us suitable
  for use with WaitForMultipleObjects.  When this object is signaled,
  CheckSynchronize *must* be called in order to reset the event.  Do not call
  ResetEvent on this handle, or background threads may hang waiting for
  Synchronize to return.
}
  SyncEvent: THandle;
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535095
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schi, ну понятно, что полностью одинаковые у них только названия)
Но и значения у многих тоже. Например, CurrencyStr, версия ОС и т.д.
...
Рейтинг: 0 / 0
Как с помощью Post-сообщений заставить программу отображать надписи.
    #39535096
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
white_niggerYuRockИх значения разные. Не всегда. И так и должно быть. Что в этом неудобного - не знаю.Крут! А а не в курсе, что у кучи народа масса проблем с этим, особенно в части VCL?Откуда же мне это знать.
У кучи людей и с Synchronize проблем масса, и вообще с VCL, да и вообще с компьютерами.
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как с помощью Post-сообщений заставить программу отображать надписи.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]