【发布时间】:2010-02-18 00:00:06
【问题描述】:
与使用阻塞调用pop()相比有什么区别,
while(pop_if_present(...))
应该优先选择哪个?为什么?
我正在寻求更深入地了解轮询自己之间的权衡,就像while(pop_if_present(...)) 的情况一样,让系统为你做这件事。这是一个很笼统的主题。例如,使用 boost::asio 我可以执行 myIO.run() 来阻止或执行以下操作:
while(1)
{
myIO.poll()
}
一种可能的解释是调用while(pop_if_present(...)) 的线程将保持忙碌,所以这很糟糕。但是必须有人或某事轮询异步事件。当它被委托给操作系统或库时,为什么以及如何更便宜?是因为操作系统或库对轮询很聪明,例如进行指数退避吗?
【问题讨论】:
标签: c++ concurrency multithreading