【问题标题】:How do you create asynchronous timers in OS X C code?如何在 OS X C 代码中创建异步计时器?
【发布时间】:2012-04-21 23:09:16
【问题描述】:

所以这个问题真的是“为什么 time.h 在 OS X 和 Linux 上不一样?”但是,我已经接受了这些差异。

为了在 'Unix' 系统上创建计时器,我遵循了本教程 http://www.helsinki.fi/atk/unix/dec_manuals/DOC_40D/APS33DTE/DOCU_007.HTM#timer-type-sec

这需要使用<sys/time.h> 并调用timer_create(),然后为信号类型设置信号处理程序。这个我知道该怎么做。问题是,同样的事情是如何在 OS X 上实现的?

需要注意的关键是这些定时器需要是实时的,即异步排队并且必须使用struct sigactionsa_sigaction字段,这样与定时器警报关联的元数据才能传递给信号处理程序。这在http://www.helsinki.fi/atk/unix/dec_manuals/DOC_40D/APS33DTE/DOCU_006.HTM#sigevent-sec 有更详细的描述。

【问题讨论】:

    标签: c macos system distributed-computing


    【解决方案1】:

    你看过setitimer()吗?

    【讨论】:

    • 是的,不幸的是这不起作用,因为我需要定时器是异步的,并且包含有关触发它们的事件的元数据。这在 Linux 中使用 siginfo_t 数据结构工作,timer_create() 允许我使用 sigevent 数据结构作为输入进行设置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2013-11-25
    • 1970-01-01
    • 2017-10-30
    • 2011-08-15
    • 2013-04-10
    • 2012-01-30
    相关资源
    最近更新 更多