nuc990 发表于 2019-3-27 14:37

msgrev阻塞等待被定时器中断问题请教

在应用中,有用到以下函数创建定时器,

[*]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);

复制代码
在代码其他地方有用到msgrcv阻塞等待其他进程的消息:

[*]if (msgrcv(qid, (void*)&msg, BUFFER_SIZE, 0, 0) < 0)

复制代码
结果定时器每次中断,唤醒了阻塞等待。这是为什么?能否有什么方法避免?谢谢

零三翟邢止胃 发表于 2019-3-28 11:20

帮你顶住啊!!!!!

airwill 发表于 2019-4-10 20:51

你可以使用非阻塞的方式来写代码吗
页: [1]
查看完整版本: msgrev阻塞等待被定时器中断问题请教