Зачем для повышения serial_executor worker_thread нужен второй цикл while? - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь понять исходный код 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?

Спасибо.

...