为了避免使用信号带来同步问题, 我使用了一个额外的辅助进程实现Timer算法, 用到了usleep和FIFO, 具体描述如下:
进程1(辅助进程): 1> 打开FIFO (用于写) 2> while (1) { usleep(500*1000); write FIFO; }
进程2(主进程): 1> 打开FIFO (用于读) 2> while (1) { poll fifo, 检查是否有数据可读 if polling-success { 读出FIFO数据 产生Timeout消息 } } 测试时发现, 如果进程1(辅助进程)在运行时, Timer机制可以正常使用. 但是, 一旦停下进程1(辅助进程), 进程2立马陷入无休止的"poll成功-读"过程.
请各位朋友指点一二, 如何在停下进程1后, 让进程2在poll fifo时失败. 谢谢!!
|