powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы [новые:1] / Поиск: Искать ответы на сообщение: #749002  
4 сообщений из 4, страница 1 из 1
Языки программирования семейства Pascal / Про многопоточность подскажите
    #749002
Просто Трёп
Скрыть профиль Поместить в игнор-лист
Участник
Как-то писал многопоточное приложение, в общем и целом все получилось. Приложение было гуишным. Каждый поток создавался из своей TPanel и в нужные моменты слал ей SendMessage или PostMessage, этого хватало для полноценного обмена информацией и всяких оповещений. В результате мне даже понравилось.

А как быть в сервисе или консольном приложении, где окон нет? Вот надо мне оповестить основной поток о какой-нибудь промежуточной ерунде, произошедшей в отдельном потоке.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Про многопоточность подскажите
    #749019
s62
Скрыть профиль Поместить в игнор-лист
Участник
Просто Трёп [игнорируется] 
Можно посылать сообщения потоку функцией PostThreadMessage. Тогда, если в потоке нет своего цикла обработки сообщений, его надо организовать при помощи например функции PeekMessage.

Насчёт евентов - это хороший вариант, но надо понимать, что поток, который будет ожидать срабатывания события при помощи функции WaitForSingleObject или WaitForMultipleObjects, будет в состоянии ожидания.

Службы никогда не писал (вроде, не припоминаю такого :) ) не особо представляю, что там удобно.
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Про многопоточность подскажите
    #749022
Просто Трёп
Скрыть профиль Поместить в игнор-лист
Участник
s62  01.04.2024, 15:26
[игнорируется]
Просто Трёп [игнорируется] 
Можно посылать сообщения потоку функцией PostThreadMessage. Тогда, если в потоке нет своего цикла обработки сообщений, его надо организовать при помощи например функции PeekMessage.

Насчёт евентов - это хороший вариант, но надо понимать, что поток, который будет ожидать срабатывания события при помощи функции WaitForSingleObject или WaitForMultipleObjects, будет в состоянии ожидания.

Службы никогда не писал (вроде, не припоминаю такого :) ) не особо представляю, что там удобно.
А обратно? Оно в обе стороны будет работать?
...
Рейтинг: 0 / 0
Языки программирования семейства Pascal / Про многопоточность подскажите
    #749089
s62
Скрыть профиль Поместить в игнор-лист
Участник
Просто Трёп  01.04.2024, 15:28
[игнорируется]
А обратно? Оно в обе стороны будет работать?
Если сообщения, то посылать можно из любого потока любому. Но чтобы поток мог принимать их, в нем должен быть цикл обработки сообщений. Вот в обычном Windows приложении на Delphi в главном потоке такой цикл уже есть, его VCL реализует.
Насчет событий, ну в моей практике отношения между потоками обычно были несимметричными. Например один поток подготавливает какие-то данные и выдает другому, чтобы тот передал их по сети. Или один поток всё время обменивается данными с каким-то устройством и периодически или сам их выдает или у него запрашивают какие-то данные.
Вот кстати со скуля один человек учебник написал несколько лет назад про многопоточность:
https://github.com/loginov-dmitry/multithread/blob/master/multithread_in_delphi_for_beginners.md

https://resql.ru/forum/topic.php?fid=58&tid=2036872
Правда не скажу сейчас, насколько хорошо написано, хотя начинал читать.
...
Изменено: 01.04.2024, 18:50 - s62
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы [новые:1] / Поиск: Искать ответы на сообщение: #749002  
Пользователи онлайн (24): Анонимы (13), Bing Bot, Сталкер, Yandex Bot, Буся 1 мин., Умник-практикующий 1 мин., Артефакт 3 мин., cat2 4 мин., Брюквенные годы 5 мин., Biene Maja 6 мин., Просто Трёп 6 мин., sergey11 9 мин.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
x
x
Закрыть


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