请教多线程之间通信问题

greathawk 2003-10-17 12:53:46
我现在设计的多线程之间是用消息队列通信的(这种方法可能不好,好的方法是什么?)

我设计了一个专门处理消息的线程,分发消息到各个线程。结果发现,程序有时候会运行很长时间后,系统不发送和接收稍息了。感觉要重启才行。

我想是不是因为有些消息发出去后,接受消息的线程却被关掉了,所以这条消息没有被接收,积累到一定程度就满了。
想知道如何解决这个问题,有什么好的进行线程间通讯的办法没有,这个程序,线程间交换数据很频繁。
...全文
74 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
dchg2000 2003-10-31
  • 打赏
  • 举报
回复
你用ipcs看看是什么原应不就结了,
多线程不一定要用IPC机制吧!
实用、简单!
hecCIBN 2003-10-31
  • 打赏
  • 举报
回复
up
liao2001 2003-10-30
  • 打赏
  • 举报
回复
补充:
多进程之间的线程交互,才有必要考虑ipc,那种ipc更适合,那只能看需求了
liao2001 2003-10-30
  • 打赏
  • 举报
回复
!楼上一堆人
多进程用ipc,多线程也可以用,但:
多线程可以用全局缓冲区,优势都不知道利用,还用消息队列,图耗系统资源
用互次解决同步问题
这样一来,问题就好办多了。。。

能够消息队列满,只能说明程序设计的不够,至于频繁交换,全局变量当然会比系统调用快得多
tangzhg 2003-10-30
  • 打赏
  • 举报
回复
菜鸟说,大家 好
smokefire 2003-10-29
  • 打赏
  • 举报
回复
消息队列满
CLIZ 2003-10-29
  • 打赏
  • 举报
回复
IPC的方法很多,pipe,fifo,shm,都是可以的。
yiyi999999999 2003-10-28
  • 打赏
  • 举报
回复
可能是因为你的消息队列已经满了,所以导致程序无法正常运行。你可以用管道,信号或共享内存来实现多进程之间的通信。
ari 2003-10-17
  • 打赏
  • 举报
回复
线程间通讯,建议用匿名管道比较好一点.简单实用.

结果发现,程序有时候会运行很长时间后,系统不发送和接收稍息了。感觉要重启才行。
^^^^^^^^^^^^^^^^^
大概因为消息队列已经满了造成的.可以判断一下.

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧