Асинхронные процедуры

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Асинхронные процедуры

Сообщение CRobin » 21.06.2016 02:46:01

Здравствуйте. Сейчас из одного потока передаю в другой поток указатель на колбэк процедуру. Когда происходит вызов колбэка, естественно процедура выполняется во втором потоке, чем создает существенную задержку в работе приложения. Сама процедура довольно тяжелая, вызывается относительно редко, но иногда может быть вызвана несколько раз одновременно (агрегация данных). Есть желание выполнять ее асинхронно в произвольном количестве копий. Есть ли в FPC готовый механизм для решения таких ситуаций, или же нужно извращаться с объектами Thread?
CRobin
постоялец
 
Сообщения: 145
Зарегистрирован: 26.01.2016 12:15:39

Re: Асинхронные процедуры

Сообщение runewalsh » 21.06.2016 03:43:35

Оберни QueueUserWorkItem, или напиши свою.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 579
Зарегистрирован: 27.04.2010 00:15:25

Re: Асинхронные процедуры

Сообщение wavebvg » 21.06.2016 17:38:37

Попробуйте MTProcs
wavebvg
постоялец
 
Сообщения: 355
Зарегистрирован: 28.02.2008 04:57:35

Re: Асинхронные процедуры

Сообщение Mirage » 22.06.2016 02:11:18

В общем случае тут пул потоков неплохо подойдет. Реализации есть разные.
Mirage
энтузиаст
 
Сообщения: 881
Зарегистрирован: 06.05.2005 20:29:07
Откуда: Russia


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 253

Рейтинг@Mail.ru