如何阻止 boost 线程并将其从另一个线程中唤醒?线程正在做一些工作,如果工作完成,它应该阻塞或休眠,如果新工作准备好,主线程应该弱化工作线程。我在 boost ipc message_queue 上尝试了阻塞读取,但这不是一个高性能的解决方案。
像这样的东西:
void thread()
{
uint8_t ret=0;
for(;;) //working loop
{
ret=doWork();
if(ret==WORK_COMPLETE)
{
BlockOrSleep();
}
}
}
使用 pthreads 我可以阻塞信号量,但这不是平台独立的。