我尝试在 C++ 中开发一个线程池,我想知道在工作线程的主循环中使用 yield() 线程还是等待条件变量更好:
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 );
}
}
有任何想法吗?两个版本之间会有性能差异吗?