Я пытаюсь создать threadpool в С++, и мне интересно, лучше ли выдать() поток в основном цикле рабочего потока или ждать переменной условия:
void worker_thread( void )
{
// this is more or less pseudocode
while( !done )
{
if( task_available )
run_task();
else
std::this_thread::yield();
}
}
против
void worker_thread( void )
{
// this is more or less pseudocode
std::unique_lock< std::mutex > lk( mutex_ );
while( !done )
{
if( task_available )
run_task();
else
condition_.wait( lk );
}
}
Любые идеи? Будут ли какие-либо различия в производительности между обеими версиями?