Псевдокод, дочернего потока, который ждет данных и передает сообщения основному потоку по получению этих данных, как его корректно завершить, если основной поток получил сообщение о завершении? Чувствую нехватку знаний, может что почитать? Вообще использую boost::asio и хочу кроссплатформенности.
while(true)
{
some_monitor.async_monotor(callback_handler);
io_service.run();
io_service.reset();
}
Если я правильно понимаю, то io_service.run() — тут я жду пока система известит мой поток и у меня нет других способов завершить это, кроме как самому себе(дочернему потоку) послать данные, которые будут означать завершение?
void callback_handler(data d)
{
if (d == STOP)
{
running = false;
}
}
...
while(running)
{
some_monitor.async_monotor(callback_handler);
io_service.run();
io_service.reset();
}
Заранее длагодарю.