буст и однопотоковая модель, управляемая событиями - PullRequest
5 голосов
/ 11 июня 2011

Boost не предоставляет однопотоковую модель, управляемую событиями, такую, которая была широко распространена в Unix до pthreads - mainloop + "callbacks", не так ли?

Например, если я хотел использовать boost:: message_queue в однопоточном приложении и смешивать его с таймерами и другими асинхронными событиями (mainloop), затем boost не поддерживает его, я прав?

Ответы [ 2 ]

10 голосов
/ 11 июня 2011

Я бы посмотрел на

  1. Повышение :: Сигналы (вы можете использовать их точно так, как вы хотите)
  2. Boost :: Asio (самое главное: пряди ). Strands позволит вам иметь свой торт и есть его (имея однопотоковую семантику, по-прежнему обеспечивая параллельную работу, в другой «однопоточной квартире», если вы разрешите мою COM-зараженную игру ) Это прямо на деньги в отношении вашего вопроса, потому что он автоматически синхронизирует и ставит в очередь работу, чтобы перейти в «главный» поток, как вы его называете.

Если вы собираетесь объединить два, обязательно используйте Boost Signals2 (потому что он поддерживает многопоточность).

6 голосов
/ 11 июня 2011

boost::interprocess::message_queue предназначен для многопроцессорной обработки. В однопоточном процессе вы всегда можете использовать std::queue.

...