免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4053 | 回复: 4
打印 上一主题 下一主题

请教一个关于主进程与子线程之间通信的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-08-19 17:24 |只看该作者 |倒序浏览
我有段程序,需要主进程与子线程通信,不知道该采用哪种通信方法比较好,请大家指点。

目的:
主进程创建多个线程,线程执行的代码(以下称线程代码)是个while(1)循环,永不退出,直到主进程退出。

我原来的程序中,主进程通过<红色>;管道</红色>;与线程通信。

主程序:向管道写2048个1,过一段时间,再向管道写2;

线程代码的循环体中,循环结构如下:
while(1){
首先去读管道,
如果读到的数据为1,
代码(1);
如果读到的数据为2,
代码(2);
}

这个模式有问题:2048个1可能过多或者过少。
1)过少。线程每执行一次循环,就读一个1,在一段时间内,可能将2048个1都读完,有些线程因为没有读到1而被阻塞。
2)过多。在一段时间内,2048个1没有读完,这个时候主程序再向管道写2的时候,线程此时1还没有读完,可能要过一点时间才能读到2,但,此时主进程的判断逻辑已经过去了。

我现在希望能:

1)主进程发送启动命令(1),所有线程都能立刻正常工作。
2)主进程发送停止命令(2),所有线程能立刻停止。

请大家帮忙呀。

论坛徽章:
0
2 [报告]
发表于 2003-08-19 17:29 |只看该作者

请教一个关于主进程与子线程之间通信的问题。

pthread_cancel终止一个线程,具体对线程的操作见man -k pthread

论坛徽章:
0
3 [报告]
发表于 2003-08-19 17:34 |只看该作者

请教一个关于主进程与子线程之间通信的问题。

我现在不是要终止线程,而是希望线程能够按照我的意图来工作。

论坛徽章:
0
4 [报告]
发表于 2003-08-19 18:12 |只看该作者

请教一个关于主进程与子线程之间通信的问题。

写一个消息循环,
通过发送消息实现通讯。

pthread_cond_wait和pthread_mutex_lock
控制消息队列,
实现线程暂时挂起。
我已经这样做了,效果不错。

论坛徽章:
0
5 [报告]
发表于 2003-08-19 18:53 |只看该作者

请教一个关于主进程与子线程之间通信的问题。

多谢多谢,,我再看看,,如果还不行,就再请教。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP