免费注册 查看新帖 |

Chinaunix

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

[进程管理] 两个无关的内核线程,如何才能及时知道某一方的退出? [复制链接]

论坛徽章:
12
寅虎
日期:2013-12-04 20:37:4915-16赛季CBA联赛之广东
日期:2017-08-22 19:23:1215-16赛季CBA联赛之上海
日期:2016-06-18 23:05:05操作系统版块每日发帖之星
日期:2016-06-06 06:20:00操作系统版块每日发帖之星
日期:2016-06-05 06:20:00操作系统版块每日发帖之星
日期:2016-06-03 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之巴勒斯坦
日期:2015-02-10 21:38:08卯兔
日期:2014-10-31 20:42:23申猴
日期:2014-06-11 17:15:10处女座
日期:2014-05-22 09:00:1815-16赛季CBA联赛之广夏
日期:2017-09-25 23:37:46
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-04 01:33 |只看该作者 |倒序浏览
本帖最后由 wait_rabbit 于 2012-12-05 12:51 编辑


==========

补充:

模型比较特殊,是 A 先命令 B 退出,B 收到指令后,选择主动退出。这样就有一个问题,不论 B 做了什么事,都不能保证 A 收到反馈时,B 确实已经退出了。

无论是什么全局标志啊、信号量啊之类的,都只是保护数据。都不能真正表示该进程已经退出。

======================

两个无关的内核线程A、B,现在 A 需要在 B 退出之后,才能进行下一步的操作。问题:A 如何才能及时感知到 B 的退出呢?

我现在的逻辑弱爆了, A 在一个循环里,每 sleep 一秒钟,就遍历一次 task 链表,如果 B 消失了,则认为已经退出。

A:

while (1) {
     msleep(1);
     traverve();
}

我也知道这个很丢人,那么,是否有某个内核接口,可以让 A 阻塞,专心等待 B 的退出信息呢?

请各位不吝赐教。:wink:

论坛徽章:
0
2 [报告]
发表于 2012-12-04 09:54 |只看该作者
回复 1# wait_rabbit


    既然,A必须等待B退出才能继续运行,这本身就不是楼主所说的两无关task,既然需要同步,应该还是要用那些常用的同步接口。坐等大侠的方法

论坛徽章:
12
寅虎
日期:2013-12-04 20:37:4915-16赛季CBA联赛之广东
日期:2017-08-22 19:23:1215-16赛季CBA联赛之上海
日期:2016-06-18 23:05:05操作系统版块每日发帖之星
日期:2016-06-06 06:20:00操作系统版块每日发帖之星
日期:2016-06-05 06:20:00操作系统版块每日发帖之星
日期:2016-06-03 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之巴勒斯坦
日期:2015-02-10 21:38:08卯兔
日期:2014-10-31 20:42:23申猴
日期:2014-06-11 17:15:10处女座
日期:2014-05-22 09:00:1815-16赛季CBA联赛之广夏
日期:2017-09-25 23:37:46
3 [报告]
发表于 2012-12-04 10:00 |只看该作者
回复 2# George_lz

sorry,没表达清楚。前文所谓“无关”,是指没有父子关系。


   

论坛徽章:
0
4 [报告]
发表于 2012-12-04 10:05 |只看该作者
回复 3# wait_rabbit

如果有资源共享,涉及到临界资源,就用mutex,如果仅仅是等待A,使用wait应该够用。kernel同步机制虽然就那几种,但涉及到的同步操作,应该都可以实现
   

论坛徽章:
12
寅虎
日期:2013-12-04 20:37:4915-16赛季CBA联赛之广东
日期:2017-08-22 19:23:1215-16赛季CBA联赛之上海
日期:2016-06-18 23:05:05操作系统版块每日发帖之星
日期:2016-06-06 06:20:00操作系统版块每日发帖之星
日期:2016-06-05 06:20:00操作系统版块每日发帖之星
日期:2016-06-03 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之巴勒斯坦
日期:2015-02-10 21:38:08卯兔
日期:2014-10-31 20:42:23申猴
日期:2014-06-11 17:15:10处女座
日期:2014-05-22 09:00:1815-16赛季CBA联赛之广夏
日期:2017-09-25 23:37:46
5 [报告]
发表于 2012-12-04 10:05 |只看该作者
并且有个地方比较纠结, A 是在 B 运行很久之后才创建的。

论坛徽章:
12
寅虎
日期:2013-12-04 20:37:4915-16赛季CBA联赛之广东
日期:2017-08-22 19:23:1215-16赛季CBA联赛之上海
日期:2016-06-18 23:05:05操作系统版块每日发帖之星
日期:2016-06-06 06:20:00操作系统版块每日发帖之星
日期:2016-06-05 06:20:00操作系统版块每日发帖之星
日期:2016-06-03 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之巴勒斯坦
日期:2015-02-10 21:38:08卯兔
日期:2014-10-31 20:42:23申猴
日期:2014-06-11 17:15:10处女座
日期:2014-05-22 09:00:1815-16赛季CBA联赛之广夏
日期:2017-09-25 23:37:46
6 [报告]
发表于 2012-12-04 10:30 |只看该作者
回复 4# George_lz

A 是在 B 运行很长一段时间之后才创建的,这个要怎马 wait 呢?

也许只能用 mutex 吧,B 一开始就获取 mutex,退出之后再释放。A 一创建就尝试获取 mutex。

   

论坛徽章:
0
7 [报告]
发表于 2012-12-04 10:58 |只看该作者
回复 6# wait_rabbit


    wait condition

论坛徽章:
12
寅虎
日期:2013-12-04 20:37:4915-16赛季CBA联赛之广东
日期:2017-08-22 19:23:1215-16赛季CBA联赛之上海
日期:2016-06-18 23:05:05操作系统版块每日发帖之星
日期:2016-06-06 06:20:00操作系统版块每日发帖之星
日期:2016-06-05 06:20:00操作系统版块每日发帖之星
日期:2016-06-03 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之巴勒斯坦
日期:2015-02-10 21:38:08卯兔
日期:2014-10-31 20:42:23申猴
日期:2014-06-11 17:15:10处女座
日期:2014-05-22 09:00:1815-16赛季CBA联赛之广夏
日期:2017-09-25 23:37:46
8 [报告]
发表于 2012-12-04 11:11 |只看该作者
回复 7# George_lz

Thank you!

   

论坛徽章:
12
寅虎
日期:2013-12-04 20:37:4915-16赛季CBA联赛之广东
日期:2017-08-22 19:23:1215-16赛季CBA联赛之上海
日期:2016-06-18 23:05:05操作系统版块每日发帖之星
日期:2016-06-06 06:20:00操作系统版块每日发帖之星
日期:2016-06-05 06:20:00操作系统版块每日发帖之星
日期:2016-06-03 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之巴勒斯坦
日期:2015-02-10 21:38:08卯兔
日期:2014-10-31 20:42:23申猴
日期:2014-06-11 17:15:10处女座
日期:2014-05-22 09:00:1815-16赛季CBA联赛之广夏
日期:2017-09-25 23:37:46
9 [报告]
发表于 2012-12-04 12:27 |只看该作者
回复 7# George_lz

研究了一下completion的原理,有一个疑问想请教。

如果 A 开始 wait 的时候, B 已经 completion 了,即已经唤醒过此队列一次。 A 会不会错过这次唤醒,从而永远 wait 下去?

   

论坛徽章:
0
10 [报告]
发表于 2012-12-04 12:30 |只看该作者
回复 9# wait_rabbit


  用wait condition,不是complete
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP