2

POSIX MQのような「時限受信」機能を持たないSystem V Message Queueを使用しています。しかし今、私はそれを必要としています(この時限受信機能)。

「では、Sys V の代わりに POSIX を使用しないのはなぜですか?」と尋ねることができます。私のベンチマークでは、SysV MQ は POSIX MQ より +-20% 高速だったからです。

今質問です。Sys V MQ の「時限受信」を偽装するには?

でループして でテストmsgrcvするコードを書きました。私はそれが醜いと思うので、美しいものを書くためのアイデアが必要です =]IPC_NOWAITusleep

4

2 に答える 2

0

X時間スリープする子プロセスを最初にフォークする小さなコードを作成できます。ウェイクアップ後、シグナル (SIGUSR1 など) をファーザーに送信し、ファーザーを中断して msgrcv をキャンセルします。その後、子プロセスは終了します。ただし、デフォルトのハンドラーはプロセスを終了するだけなので、そのシグナルのハンドラーを指定する必要があることを覚えておく必要があります。

于 2012-01-04T19:23:36.407 に答える