消息队列的使用
關于消息隊列的接口函數主要參考unix環境高級編程。
剛開始看的時候,由兩個疑問,我自己的答案是這樣的
1.消息隊列在系統中的最大個數,關于這個問題,書上有明確的答案;書上有個表格列明了linux ,free bsd,mac OS X ,solaris中的典型值。當然也可以通過一些手段來修改。sysctl就可以修改。
2.在多個線程(或進程)同時對一個消息隊列進行讀寫,是否需要同步?
? 書上沒有明確的答案,但是據猜測這個消息隊列很容易設計成用戶層不需要做同步的一個進程間通訊方法。所以答案應該是不需要同步(內核已經做了同步的處理);
后來寫了個測試程序,結果跟這個結論一致。(能看下內核對這部分的處理就更明確了)。
?
圣經上說:在新的應用上最好不要使用消息隊列了。
?
提示出錯時的一些解決辦法:
報錯No space left on device
sysctl -w kernel.msgmni=128??
sysctl 的使用可參見:http://www.cnblogs.com/fly-fish/archive/2011/10/22/2221532.html
這條指令可以設置系統中同時運行的最大的message queue的個數
查看當前系統消息隊列的限制ipcs –l
ipcs工具是調試消息隊列一個很不錯的工具。
ipcs的使用可參見:ipcs命令的使用 http://www.cnblogs.com/fly-fish/archive/2011/10/21/2220389.html
?
當然,任何指令最詳細和明確的還是man page
轉載于:https://www.cnblogs.com/fly-fish/archive/2011/10/22/2221530.html
總結
- 上一篇: PHP中的$_COOKIE与urlenc
- 下一篇: 面向对象是软件开发范式的根本性颠覆: 主