C++`Timer`类实现

Kol*_*nya 13 c++ algorithm multithreading class timer

我设计了一个Timer类,每隔nn秒调度一次事件(使用Observer模式).当然它会创建一个新线程,以便不阻止调用它的线程.

然后我想 - 嗯......让我们说100个客户端连接到我的服务器程序,我为每个客户端创建了3个计时器,所以我运行了300个线程.不是很多吗?它是一个ok,我运行300线程?

然后我被告知 AS3 Timer在主线程中运行.我想知道:怎么样?如何实现在主线程中运行的计时器而不是阻塞它?在C++中有可能吗?

Som*_*ude 8

一种可能的解决方案是只为所有计时器使用一个线程,并按超时排序队列.这个问题是当一个计时器到期并且你调用回调函数时,它将在全局计时器线程的上下文中运行而不是单独运行.这当然可以通过为事件生成一个新线程来解决,这是然后直接加入,或者通过一个线程池来处理事件,因此主计时器线程不会"堵塞".