1
1
对于任意回调,请维护posix管道(请参见管道(2))。当您要执行延迟调用时,请将一个由函数指针和可选上下文指针组成的结构写入到写入端。读取端只是选择的另一个输入。如果选择可读,则读取相同的结构,并使用上下文作为参数调用函数。 对于定时回调,按到期时间顺序维护列表。列表中的条目是结构,例如“到期时间”(作为上一次回调后的间隔);函数指针;可选上下文指针。如果此列表为空,请在select()中永久阻止。否则,在第一个事件到期时超时。在每次调用选择之前,重新计算第一个事件的到期时间。 在合理的界面后面隐藏细节。 |
2
0
虽然
最好的策略是逐时检查描述符(指定小的超时值),如果没有什么,则在空闲时间做您想做的,否则处理I/O。 |
3
0
您可以利用select()或poll()的超时时间定期执行后台操作:
|
4
0
对于使用select循环的即时回调,可以使用像/dev/zero这样始终处于活动状态的特殊文件之一。将允许选择退出,但也将允许其他文件变为活动状态。 对于定时延迟,我只能在选择时使用超时。 以上两项都不太好,请发送更好的答案。 |
Al-geBra · 在C中向POSIX共享内存对象添加一维数组 6 年前 |
yaobin Anycorn · 如何导致Linux管道失败? 6 年前 |
Omnifarious · 如何在Linux中删除补充组? 6 年前 |