Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

多进程同时从消息队列取消息的问题

Posted on 2008-08-26 15:01 Prayer 阅读(6251) 评论(0)  编辑 收藏 引用 所属分类: LINUX/UNIX/AIX
我现在有一个程序,是做成了多进程同时从一个消息队列中取消息,都以阻塞的方式,从消息队列中顺序取消息,但是多进程同时取的时候我没有加锁,不知道这样会不会出现什么问题?操作系统应该对进程有个排队的操作吧?
不会有什么问题,OS保证操作的原子性,即不可能出现一条消息被几个进程各收取一部分的情况。但具体是哪个进程收到消息则是随机的。

我在写一个程序,父进程负责循环从消息队列中读取消息,如果有消息则生成子进程处理消息并将处理结果写入另一消息队列,而主进程继续读取消息,这样有很多消息时就会并发出很多子进程处理消息并写入同一消息队队列,我想问一下
在多个子进程同时向一个消息队列写时要不要进行互斥操作?请有经验的高手不吝赐教,非常感谢!
消息队列是个队列,送进去的消息会排队,所以不会有“同一个消息”的情况
读操作是根据mtype来区分不同的消息的,当某个消息写入后,如果读进程退出了,这个消息会堵在消息队列里,多了就会造成消息队列堵塞,任何进程写消息队列都会失败,造成系统的不可用,这时要注意读、写进程的配合,这也是用消息队列最不爽的地方!
还有,好象消息队列不支持peek的方法?
我以前做过这样一个程序,因为要写到一个文件中的不同段中,所以用了这种方式,要注意的一点就是程序异常退出之后需要对该队列做相应处理。
请教多进程写消息队列问题

消息队列不必互斥。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理