2013-05-10 19 views
0

有没有什么方法可以在纯C/C++中编写定时器,只使用pthreads既不需要boost也不需要Qt。 我希望OS只运行相关线程中的函数(例如MyThreadClass.myfunction())。我不想检查每个线程中的信号(必须有1种线程检测时间)。计时器线程必须尽快运行(通过中断其他进程和线程),并能够计算未运行时的时间。并且它不能使用while(true)while循环,我不想让CPU忙碌。只有pthreads的C++定时器

例如,我将我的线程设置为100ms运行。它背景和检查时间。它应该运行频繁但很短。在100ms时,它会中断线程并运行特定的功能。

+1

你应该定义什么*“它会中断线程”*对你意味着什么。你也应该告诉我们是否可以使用其他的东西(例如Linux系统调用)。 – 2013-05-10 21:16:42

+0

那么,你想定期运行一些函数吗? – Lol4t0 2013-05-10 21:23:07

+0

服务器运行基于Linux的操作系统,所以我们可以使用系统调用(但如果有任何POSIX标准调用,我更喜欢它们)。通过说中断我的意思是立即通知或运行计时器线程 – Ongun 2013-05-12 14:15:00

回答

1

你必须更具体地说明为什么你只需要使用pthreads。以下内容使用librt,它是大多数POSIX系统上包含的系统库的一部分。

听起来像你想使用timer_createSIGEV_THREAD参数。这将创建一个线程并在计时器到期时运行指定的函数。

+0

原因是我正在研究一个非常严格的服务器系统。我无法编译我的库,因为我的空间非常小,无法编译像boost这样的库。 – Ongun 2013-05-12 14:16:24