powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы [новые:6] / Языки программирования семейства Pascal [закрыт для гостей] / Про многопоточность подскажите, Поиск: Искать сообщения, созданные автором: IT-Клоп  
5 сообщений из 5, страница 1 из 1
Языки программирования семейства Pascal / Про многопоточность подскажите
    #749006
IT-Клоп
Скрыть профиль Поместить в игнор-лист
Участник
надо тогда действовать через WinAPI

Скажем, применить механизм Event
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Про многопоточность подскажите
    #749091
IT-Клоп
Скрыть профиль Поместить в игнор-лист
Участник
WaitForSingleObject можно ждать с таймаутом - опрашивая.

Ну в щем надо какую-то пилить костыльную синхронизацию полюбому...
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Про многопоточность подскажите
    #749093
IT-Клоп
Скрыть профиль Поместить в игнор-лист
Участник
в службе реализовывать обработку сообщений как в окне WinApi - не знаю, такая спорная имхо идея.
Окно - оно и живёт за счёт этого цикла.
А служба другим должна заниматься.
Ну и тем более такой тяжеловесный механизм использовать для общения между потоками - плохо имхо.
Из пушки по воробьям. у них же и так общая память.

Мессаги - это IPC для общения между окнами windows и между визуальными приложениями.

Потоки должны общаться через критически секции - вошел в неё , проверил, не пришло ли что-то, забрал, флаг снял, поехал далее.
Так будет наивысшая производительность достигнута.
...
Изменено: 01.04.2024, 18:55 - IT-Клоп
Рейтинг: 1 / 0
Нравится: Tosh
Языки программирования семейства Pascal / Про многопоточность подскажите
    #749097
IT-Клоп
Скрыть профиль Поместить в игнор-лист
Участник
s62  01.04.2024, 19:00
[игнорируется]
IT-Клоп  01.04.2024, 18:55
[игнорируется]
Ну и тем более такой тяжеловесный механизм использовать для общения между потоками - плохо имхо.
Да не особо тяжеловесный. Я сам правда один раз с этим дело имел, и то, другой человек делал, а я подрихтовывал. Сообщения через PostMessage, PostThreadMessage хороши тем, что асинхронная обработка - один поток не ждет, пока второй обработает сообщение. Добавил сообщение в очередь и дальше занимается своими делом. А с критическими секциями могут быть коллизии, когда один поток ждет другой. Но да, критические секции - норм, тоже ими не раз пользовался.
Неизвестно, что за служба у Просто Трепа и что за обмен данными там между потоками.

p.s. Один раз - сообщения от потока в другой доп. поток, так что там цикл обработки сообщений делали. А из доп. потока в основной поток GUI приложения передавать данные через PostMessage или оповещать через это, так это много раз использовал, это по-моему удобно. Ну со службами тут другая история.
Но по сравнению с ним общая память потоков суперпроизводительна.
Это же как раз преимущество потоков.
Всего-то для них структуру в памяти организовать, таблицу, куда можно - добавить поток, добавить для него очередь сообщений.
и через эту очередь общаться, используя CriticalSection. Это именно для потоков - классика.
...
Изменено: 01.04.2024, 19:08 - IT-Клоп
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Про многопоточность подскажите
    #749100
IT-Клоп
Скрыть профиль Поместить в игнор-лист
Участник
Для паттернодрочеров - это паттерн Observer, где поток может подписаться на сообщения себе.

Единственное - проверку надо в потоке костылить, это да. потому цикл придётся делать - для проверки очереди.

Надо смотреть, что за задача.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы [новые:6] / Языки программирования семейства Pascal [закрыт для гостей] / Про многопоточность подскажите, Поиск: Искать сообщения, созданные автором: IT-Клоп  
Читали тему (1): Анонимы (1)
Игнорируют тему (3): erbol, Tabula Rasa, папа акуз
Читали форум (1): Анонимы (1)
Пользователи онлайн (34): XEugene, Анонимы (13), Yandex Bot, Bing Bot, Артефакт, sergey11, Умник-практикующий 1 мин., жЫвоглот 2 мин., Google Bot 2 мин., Дед-Папыхтет 2 мин., pashtetos1 2 мин., Просто Трёп 3 мин., Горбатый ёж 3 мин., NSFuimus 3 мин., cat2 4 мин., Oleg-a 5 мин., Green 5 мин., anonymous 6 мин., Сталкер 6 мин., паразит 7 мин., Буся 7 мин., gyrus 8 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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