2010-11-05 84 views
1

林。 但現在我需要它(這個定時接收FUNC。)。System V消息隊列 - 定時使用System V消息隊列,其不具有「定時接收」功能,如POSIX MQ接收

有人可能會問:「那麼你爲什麼不使用POSIX代替Sys系統V'」。因爲在我的基準測試中,SysV MQ的速度比POSIX MQ快20%。

現在的問題。 如何僞造一個「定時接收」是SYS V MQ?

我寫了一段代碼,它測試msgrcvIPC_NOWAITusleep循環。 我認爲它很醜,所以我需要想法來寫一個漂亮的=]

回答

0

你可以做一個小代碼,第一次fork一個子進程睡眠X時間。它喚醒後,它發送一個信號(如SIGUSR1)的父親,即interrumpts父親和取消msgrcv。然後子進程就會死亡。但是您必須記住,您需要爲該信號指定一個處理程序,因爲默認的處理程序剛剛退出該過程。

0

本文將向您注意到了同樣的事情,你需要循環就可以了: http://linuxgazette.net/issue92/hawk.html

它接着提出一個內核修改,以解決這個問題。 YMMV,但我懷疑你不會爲了這麼做而破解你的內核。 :)