Я пытаюсь понять исходный код boost.thread.executor.serial_executor.
В serial_executor.hpp, строка 112 , мы видим, что есть два цикла while вфункция worker_thread
:
/**
* The main loop of the worker thread
*/
void worker_thread()
{
while (!closed())
{
schedule_one_or_yield();
}
while (try_executing_one())
{
}
}
Похоже, если первый цикл завершен, work_queue должен закрыться, тогда try_executing_one
не вернет true снова, поэтому второй цикл ничего не сделает, не так ли?
Итак, какова цель второго цикла while?
Спасибо.