本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== Solaris 的 Cyclic ====== Solaris 的 Cyclic 是和 FreeBSD 的 timeout(9) 不同的 API。 cyclic 是在 'cyt_when' **之后** 以 'cyt_interval' 为间隔触发。因此,原先采用 Cyclic 的程序应如此修改: 第一部分: <code c> cyclic_reprogram(cycid, gethrtime() + timeout); </code> 在 FreeBSD 上对应的应为: <code c> callout_reset(&cycid, hz * timeout / NANOSEC, callback, arg); </code> 其中 callback 是 cyclic 的回调函数。 第二部分: <code c> cyclic_reprogram(cycid, CY_INFINITY); </code> 相当于停用这个cyclic。在 FreeBSD 上对应的应为: <code c> callout_drain(&cycid); </code> 第三部分: 在回调处理函数中, Solaris 不需要做额外处理(后续仍会按 interval 来调用该回调处理),而 FreeBSD 则需要在结束前做: <code c> callout_schedule(&cycid, hz * interval / NANOSEC); </code>