(+)急数,Solaris8下的消息队列问题!!!

各位大侠,在Solaris8上开发时,用消息队列进行进程间通信的时候发现消息队列所能容纳的字节数有限制,我已经将之改为4M大小(用msgctl()函数),并用ipcs -o查看,该消息队列字节总数限制确实已经改为4M的大小,但是在运行过程中又发现该队列所包含的字节数最多不会超过80K字节大小,消息队列中的包的总数不会超过40个(每个包的长度为2K字节),请问为什么?

---------------------------------------------------------------

指定参数,从新编译内核.
另外,传递这样大的数据量,我建议你使用共享内存.这样,效率可能会更高一些.
---------------------------------------------------------------

用共享内存吧:
进程A将数据写入共享内存,发送一个信号(如SIGUSR1)给进程B,进程先阻塞,收到SIGUSR1信号时再去读共享内存的数据。
共享内存里设一个标志位,有MEM_IDLE和MEM_WORK两种状态,A写数据后状态也要改为MEM_WORK,B处理完后改回为MEM_IDLE.
---------------------------------------------------------------

用共享内存吧:
进程A将数据写入共享内存,发送一个信号(如SIGUSR1)给进程B,进程B先阻塞,收到SIGUSR1信号时再去读共享内存的数据。
共享内存里设一个标志位,有MEM_IDLE和MEM_WORK两种状态,A写数据后状态也要改为MEM_WORK,B处理完后改回为MEM_IDLE.

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus