此线程对网络活动非常敏感,但可以保证仅以每秒100次的速度处理消息队列。我可以继续减少超时但是在某一点之后我会忙着等待并且咀嚼CPU。这个解决方案是否真的与我没有切换到另一种方法一样好?
// semi pseudocode
while (1) {
process_thread_message_queue(); // function returns near-instantly
struct timeval t;
t.tv_sec = 0;
t.tv_usec = 10 * 1000; // 10ms = 0.01s
if (select(n,&fdset,0,0,t)) // see if there are incoming packets for next 1/100 sec
{
... // respond with more packets or processing
}
}
答案 0 :(得分:2)
这取决于您的操作系统为您提供的操作系统。在Windows上,您可以使用MsgWaitForMultipleObjectsEx等待线程消息和一堆句柄同时。这解决了您的问题。在其他操作系统上你应该有类似的东西。