免费注册 查看新帖 |

Chinaunix

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

请问C++中如何监视其他进程是否运行结束? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-01 15:23 |只看该作者 |倒序浏览
如题
linux 下pthread编写多线程新手请教
我的情况是
要开100个线程发送邮件,
然后再开一个监视线程,每隔10s或者一段时间记录一下邮件发送情况。如何判断此时发送邮件的线程是否都已经运行完毕?

多谢各位指点,没有说清楚的地方请及时告知,多谢

论坛徽章:
0
2 [报告]
发表于 2010-08-01 16:12 |只看该作者
能不能这样做

建立一个状态数组
在main里面create100个工作线程和一个监视线程。
然后在main里面pthread_join()工作线程,如果join返回0,就将状态数组的相应位置
成finished,
监视线程则在固定时间间隔去读取状态数组
这样pthread_join应该不会影响其他线程吧

能否通过pthread_join返回0来判断该线程已经停止呢?


太弱了,十分感谢解答,顺便推荐点儿这方面的学习资料吧

论坛徽章:
0
3 [报告]
发表于 2010-08-01 18:30 |只看该作者
按时间监视的话,可以写个函数注册SIGALRM信号去定时处理,这样可以减少线程开支。
至于主线程,我上次用到一个笨方法是跟你一样使用for循环去join其他线程。只要join阻塞完毕,线程就是已经停止了。

也可以使用条件变量来同步线程。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP