在应用中,有用到以下函数创建定时器,
- printf ("Create SIGALRM timer!\n");
- signal(SIGALRM, timer_isr);
- value.it_value.tv_sec = 0;
- value.it_value.tv_usec = 50000; //50ms
- value.it_interval.tv_sec = 0;
- value.it_interval.tv_usec = 50000;
- setitimer(ITIMER_REAL, &value, NULL);
[color=rgb(51, 102, 153) !important]复制代码
在代码其他地方有用到msgrcv阻塞等待其他进程的消息:
- if (msgrcv(qid, (void*)&msg, BUFFER_SIZE, 0, 0) < 0)
[color=rgb(51, 1024, 153) !important]复制代码
结果定时器每次中断,唤醒了阻塞等待。这是为什么?能否有什么方法避免?谢谢
|