免费注册 查看新帖 |

Chinaunix

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

[FreeBSD] 关于多进程+多进程编码的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-02 13:03 |只看该作者 |倒序浏览
我在主进程中创建了两个线程,这两个线程可以正常工作
但我在子进程中创建这两个线程,线程创建成功了,pthread_create返回值为0,但是这两个线程一值没有执行,直到我CTRL+C发送信号给程序,终止程序执行时候,创建的线程才开始运行(当然刚启动就退出了),这是为什么?

   
  1. void * product_thread, void *arg);
复制代码


  1.    if ((ret = pthread_create(&producter,  NULL, product,  NULL)) != 0) {
  2.       printf("Create product  thread failed!\n");
  3.       perror(strerror(errno));
  4.    }
复制代码


  1. printf("product and consume thread create successfully!\n");
复制代码

[ 本帖最后由 ktrudger 于 2007-2-2 13:06 编辑 ]

论坛徽章:
2
亥猪
日期:2014-03-19 16:36:35午马
日期:2014-11-23 23:48:46
2 [报告]
发表于 2007-02-02 13:13 |只看该作者
能给个简单但是完整的代码吗(只要能说明问题就行,没有太多精力去猜测文字描述)

论坛徽章:
0
3 [报告]
发表于 2007-02-02 14:19 |只看该作者
跟这位同志遇到的问题差不多;
http://bbs.chinaunix.net/viewthr ... hlight=%CF%DF%B3%CC

论坛徽章:
0
4 [报告]
发表于 2007-02-02 14:19 |只看该作者
我这边也是主线程那边用msgrcv()收消息,另外两个线程就跑不了!

论坛徽章:
0
5 [报告]
发表于 2007-02-02 15:40 |只看该作者
能不能把你的源程序都,贴上来.
我看看

论坛徽章:
0
6 [报告]
发表于 2007-02-02 15:46 |只看该作者
问题解决了,原来是msgrcv收发消息时候,由于消息队列为空,所以阻塞住了。把整个进程都阻塞了!
msgrcv中设置IPC_NOWAIT标志,即可。

评分

参与人数 1可用积分 +3 收起 理由
gvim + 3 感谢提供解决经验

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP