LINUX.ORG.RU

История изменений

Исправление SkyMaverick, (текущая версия) :

А зачем потокам просыпаться для проверки? Вообще, похоже на банальный event loop.

Делаешь кольцевой буфер (таже очередь, в общем-то), кидаешь в него сообщения и регистрируешь таблицу/список callback-ов, которые будет дёргать event loop. Ну, если не хочется дёргать все потоки на каждое сообщение, можно сделать логику масок, чтобы evloop дёргал потоки только на интересные для них сообщения.

Ну как-бы и всё: никто не пишет в evloop - все потоки спят, в evloop кто-то написал - он дёргает потоки, которые подписались на сообщения (ну или все, если маскирования нет).

В общих чертах и libuv/libev/libevent устроены по тому же принципу.

Исправление SkyMaverick, :

А зачем потокам просыпаться для проверки? Вообще, похоже на банальный event loop.

Делаешь кольцевой буфер (таже очередь, в общем-то), кидаешь в него сообщения и регистрируешь таблицу/список callback-ов, которые будет дёргать event loop. Ну, если не хочется дёргать все потоки на каждое сообщение, можно сделать логику масок, чтобы evloop дёргал потоки только на интересные для них сообщения.

Ну как-бы и всё: никто не пишет в evloop - все потоки спят, в evloop кто-то написал - он дёргает потоки, которые подписались на сообщения (ну или все, если маскирования нет).

В общих чертах и libuv/lubev/libevent устроены работают по тому же алгоритму.

Исходная версия SkyMaverick, :

А зачем потокам просыпаться для проверки. Вообще, похоже на банальный event loop.

Делаешь кольцевой буфер (таже очередь, в общем-то), кидаешь в него сообщения и регистрируешь таблицу/список callback-ов, которые будет дёргать event loop. Ну, если не хочется дёргать все потоки на каждое сообщение, можно сделать логику масок, чтобы evloop дёргал потоки только на интересные для них сообщения.

Ну как-бы и всё: никто не пишет в evloop - все потоки спят, в evloop кто-то написал - он дёргает потоки, которые подписались на сообщения (ну или все, если маскирования нет).

В общих чертах и libuv/lubev/libevent устроены работают по тому же алгоритму.