C中的非阻塞睡眠定时器

我正在寻找一个良好的非阻塞睡眠计时器在C为Windows

目前我正在使用sleep(10); 这当然是一个阻塞计时器。

另外我希望它不消耗系统资源,就像我的睡眠计时器一样,它不使用任何我感到满意的CPU或系统资源。

那么,我可以使用的最好的非阻塞睡眠定时器是什么? 还请包括一个如何使用它的例子。

谢谢。

你不需要一个API来改变你的设计。

一个简单的是这个。

你可以有多个线程,一个是经理线程,另外一个是工作线程。 管理器线程每10秒钟会唤醒一次,创建一个新的工作线程并进入休眠状态。 工作者线程将继续工作,即使在经理睡觉,这是你有你的非阻塞效应。

我不知道你是多么亲近线程,但这是一个非常非常基本的教程 ,可能会让你开始这个。

Win32 API有SetTimer() 。 有从该页面链接的代码示例 。

根据OP最近对问题的评论,听起来好像目标是允许程序继续处理,但能够每10秒调用一些函数。 提供这种功能的一种方法是创建一个单独的线程,其职责是每10秒执行一次函数。 它可以使用Sleep( 10000 )来阻止自己,然后调用函数,然后睡觉等。

主线程在这种情况下不会被阻塞,并且可以继续工作。

在Windows上,您有以下选项:

您还应该记住,定时器回调函数将在您的应用程序的不同线程下运行。 所以如果回调函数使用相同的数据作为你的主线程,那么你需要保护它们(使用Mutex,CriticalSection等)来消除多线程的同时访问。

在这个问题的解决方案,回答你的?

定时器来实现超时功能

问候,托尼。