gpt4 book ai didi

C++ `Timer` 类实现

转载 作者:IT老高 更新时间:2023-10-28 22:59:29 36 4
gpt4 key购买 nike

我设计了一个 Timer 类,它每 n n 秒分派(dispatch)(使用观察者模式)一个事件。当然,它会创建一个新线程,以免阻塞调用它的线程。

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

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

最佳答案

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

关于C++ `Timer` 类实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12402233/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com