消息队列的使用
关于消息队列的接口函数主要参考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