【发布时间】:2013-05-10 21:14:34
【问题描述】:
有没有办法用纯 C/C++ 编写计时器,只使用 pthreads 既不是 boost 也不是 Qt。 我希望操作系统只运行相关线程中的函数(例如 MyThreadClass.myfunction())。我不想检查每个线程中的信号(必须有一种类型的线程检查时间)。计时器线程必须在该时间尽快运行(通过中断其他进程和线程),并且能够计算在它不运行时经过的时间。并且它不能使用 while(true) 之类的循环,我不想让 CPU 忙。
例如,我将线程设置为在 100 毫秒内运行。它进入背景并检查时间。它应该频繁但短暂地运行。在 100 毫秒时,它将中断线程并运行特定功能。
【问题讨论】:
-
你应该定义“它将中断线程”对你意味着什么。您还应该告诉我们是否可以使用其他东西(例如 Linux 系统调用)。
-
那么,你想定期运行一些函数吗?
-
服务器运行基于 Linux 的操作系统,因此我们可以使用系统调用(但如果有任何 POSIX 标准调用,我更喜欢它们)。说中断是指立即通知或运行计时器线程
-
是的,但我想在实时后最短的时间内完成。
-
@10qn:如果你创建一个线程并给它实时调度类,然后在该线程中创建一个计时器,操作系统将尽最大努力在预定的时间运行它,最少延迟。您可能需要在实际所需的超时之前将超时值设置为纳秒或微秒,以确保线程在需要时唤醒,因为计时器规范总是在请求的时间或之后唤醒。