社区
Linux/Unix社区
帖子详情
重分求解,UNIX下的消息队列非常失败,经常发生堵塞现象,现改用FIFO,但FIFO又得自己设计消息,请高手指点
xiyupiaopiao
2007-12-10 07:00:02
怎么设计自己的消息,消息要变长的?接收方怎么取消息?变长的话怎么确定消息边界
...全文
156
10
打赏
收藏
重分求解,UNIX下的消息队列非常失败,经常发生堵塞现象,现改用FIFO,但FIFO又得自己设计消息,请高手指点
怎么设计自己的消息,消息要变长的?接收方怎么取消息?变长的话怎么确定消息边界
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
潇洒哥爱coding
2011-01-05
打赏
举报
回复
[Quote=引用 9 楼 wohow 的回复:]
Unix设计者周详考虑了计算机的使用和设计,所以确实被证明稳定可靠。它所依赖的C/C++的设计者只是设计了C的语法,要求程序员确保程序的正确性和健壮性。而很多“高级”C程序员忽略了这一点,当程序出错时首先想到的是别人有什么问题而不考虑自己的问题。
Windows的设计者过多的考虑了使用者的感受,所以一出世就风靡全球,但是它把世人都当作傻瓜的做法早已为很多人所不耻。如果不是因为目前的生计,我早就……
[/Quote]
如果你那么说 那你学C干嘛?C不是让人像傻瓜一样,有本事你去使用机器码啊~ 你牛的话你也搞个windows啊,windows是革命,如果想使用计算机的人都学去UNIX,那计算机能如果迅速的普及吗,搞得自己多牛似地。不齿?
ckc
2007-12-11
打赏
举报
回复
以pid做消息类型当然有这样的问题
你可以指定一个特定的值做消息的key啊
至于消息是在内核中那也很正常,消息本来就是设计用来在不同的进程中交换信息用的
进程关了还保存消息是很正常的
消息队列创建者和root都可以删除。
unix的体系结构运转了这么多年,支撑了无数被实践证明很稳定可靠的软件。
反观微软,自己的软件在一起都无法做到稳定可靠。
如果你觉得微软考虑的更全面,那只能说明你还需要继续努力学习啊
cceczjxy
2007-12-11
打赏
举报
回复
尽信书则不如无书,消息队列确实有很多不足,如不能查询等,消息堵里面也无法回收
======
怎么叫做不能查询啊?可以顶开m个消息队列,每个消息队列可以有n种消息,选择需要处理的类型就可以。
消息堵了?如果是处理不过来,可以增加CPU和内存,可以调整内核参数啊;如果是程序错误,就改程序吧。
--------------------------------------------------------
赞成.带着怀疑的态度学习是好事,但不要轻易下结论.
xiyupiaopiao
2007-12-11
打赏
举报
回复
我以PID做为消息类型,如果这个进程突然死掉了,而里面存在它没收的消息,这个消息就驻留在消息队列中,请问这个问题怎么解决,还有消息队列是内核持续性,进程都关了,消息队列内容还保存,这咋设计的,类似的还有共享内存等,还是windows考虑的全面
mymtom
2007-12-11
打赏
举报
回复
尽信书则不如无书,消息队列确实有很多不足,如不能查询等,消息堵里面也无法回收
======
怎么叫做不能查询啊?可以顶开m个消息队列,每个消息队列可以有n种消息,选择需要处理的类型就可以。
消息堵了?如果是处理不过来,可以增加CPU和内存,可以调整内核参数啊;如果是程序错误,就改程序吧。
wohow
2007-12-11
打赏
举报
回复
Unix设计者周详考虑了计算机的使用和设计,所以确实被证明稳定可靠。它所依赖的C/C++的设计者只是设计了C的语法,要求程序员确保程序的正确性和健壮性。而很多“高级”C程序员忽略了这一点,当程序出错时首先想到的是别人有什么问题而不考虑自己的问题。
Windows的设计者过多的考虑了使用者的感受,所以一出世就风靡全球,但是它把世人都当作傻瓜的做法早已为很多人所不耻。如果不是因为目前的生计,我早就退出Windows了
xiyupiaopiao
2007-12-11
打赏
举报
回复
如你所说,如果要实现进程间通信类,能实现任意两个进程相互通信,消息类型以怎么来定义呢?
lauxp
2007-12-10
打赏
举报
回复
message queue是定长的吧
为什么堵塞?处理不过来?
xiyupiaopiao
2007-12-10
打赏
举报
回复
尽信书则不如无书,消息队列确实有很多不足,如不能查询等,消息堵里面也无法回收
NC
2007-12-10
打赏
举报
回复
消息队列堵塞,多半是应用程序逻辑有问题。在UNIX上出现N多年的东西,是值得信赖的。
计算机考研面试汇总
队列:只允许在队头删除,在队尾插入的顺序表,队列先进先出eg:排队买饭栈:只允许在栈顶插入和删除的顺序表,栈后进先出。堆:堆分为小根堆和大根堆。(1)每个结点都小于它的左右孩子的值—小根堆;(2)每个结点都大于它的左右孩子的值—大根堆;堆又称为优先队列。循环队列–可以解决假溢出循环队列:牺牲一个存储单元来区分队空和队满,队空:front指针等于rear指针时;队满:(队尾指针+1)余队列长度等于队头指针;...
服务端编程中多线程的应用
本文是陈硕的《Linux多线程服务端编程 使用muduo C++网络库》一书中,第三章的读书笔记。其中暗红颜色的文字是自己的理解,鲜红颜色的文字表示原书中需要注意的地方。 一:进程和线程 每个进程有自己独立的地址空间。“在同一个进程”还是“不在同一个进程”是系统功能划分的重要决策点。《Erlang程序
设计
》[ERL]把进程比喻为人: 每个人有自己的
JehanRio‘s 计算机后端岗位面经汇总(燃烧自己,最干货的一篇 —— 包含C++、408、数据库、Linux、场景题、智力题等等)
他是一个数据结构(很长的二进制向量) ,可以用来判断某个元素是否在集合内,具有运行快速,内存占用小的特点。他只能告诉我们一个元素绝对不在集合内或可能在集合内。布隆过滤器很难实
现
删除操作。布隆过滤器主要是为了防止redis缓存击穿问题(前端要查询一个数据,但是redis没有这个数据,就会去数据库查询,数据库可能承受不了这么大的流量就挂掉了)。有了布隆过滤器,就能判断哪些数据不在数据库中,防止缓存击穿。可以被声明为内联函数。但是如果这个虚函数在派生类中被覆盖,那么内联可能不会
发生
。
Java后端面试八股文汇总
包含java基础,java虚拟机,java多线程,Redis,
设计
模式,数据结构与算法,操作系统,计算机网络
想找工作,这一篇15w字数+的文章帮你解决
本篇文章是博主自己找工作时收集总结的,涵盖了Go语言、MySQL数据库、计算机网络、操作系统、Redis、Python语言等多种面经,主要是根据博主自己的简历来制作的,编写不易,先赞后看。最后,给大家看一下简历,给大家作为参考!!!话不多说,开搞!
Linux/Unix社区
23,120
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章