【问题标题】:System V Message Queue - Timed receiveSystem V 消息队列 - 定时接收
【发布时间】:2011-05-05 20:13:38
【问题描述】:

我正在使用 System V 消息队列,它没有“定时接收”功能,如 POSIX MQ。 但现在我需要它(这个定时接收功能)。

有人可能会问:“那你为什么不使用 POSIX 而不是 Sys V?”。因为在我的基准测试中,SysV MQ 比 POSIX MQ 快 +- 20%。

现在是问题。 如何为 Sys V MQ 伪造“定时接收”?

我编写了一段代码,它在与usleep 的循环中测试msgrcvIPC_NOWAIT。 我觉得它很丑,所以我需要想法来写一个漂亮的=]

【问题讨论】:

    标签: message-queue sysv


    【解决方案1】:

    这篇文章展示了你注意到的同样的事情,你需要循环它: http://linuxgazette.net/issue92/hawk.html

    然后它继续提出一个内核修改来解决这个问题。 YMMV,但我怀疑你不会仅仅为了做到这一点就破解你的内核。 :)

    【讨论】:

      【解决方案2】:

      您可以编写一段代码,首先派生一个休眠 X 时间的子进程。唤醒后,它向父亲发送一个信号(如 SIGUSR1),中断父亲并取消 msgrcv。然后子进程死亡。但是您必须记住,您需要为该信号指定一个处理程序,因为默认的只是退出进程。

      【讨论】:

        猜你喜欢
        • 2013-03-29
        • 2010-12-15
        • 2020-04-18
        • 1970-01-01
        • 2017-05-21
        • 2011-07-10
        • 1970-01-01
        • 2016-03-04
        • 2011-09-18
        相关资源
        最近更新 更多