免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: iw1210
打印 上一主题 下一主题

[C] 像这样假设pthread_cond_wait函数没有第二个参数,不也能实现同样的功能么。 [复制链接]

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
11 [报告]
发表于 2013-01-17 16:58 |只看该作者
本帖最后由 shan_ghost 于 2013-01-17 17:02 编辑
iw1210 发表于 2013-01-17 16:53
额,mutex 不就是互斥锁么,这个有什么难的


和谁互斥?mutex究竟“管”多大范围?

论坛徽章:
0
12 [报告]
发表于 2013-01-17 17:15 |只看该作者
回复 11# shan_ghost


    看在#9楼的猜测,请指出哪里猜测不对。。。。。。

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
13 [报告]
发表于 2013-01-17 17:17 |只看该作者
我怎么觉得特别别扭呢, 楼主是想毁灭CU吧.

论坛徽章:
0
14 [报告]
发表于 2013-01-17 17:22 |只看该作者
linux_c_py_php 发表于 2013-01-17 17:17
我怎么觉得特别别扭呢, 楼主是想毁灭CU吧.


实在找不到关于 pthread_cond_wait 详细介绍了。找到一些介绍也都是含糊其辞模糊不清,所以就猜测一下,抛砖引玉~~~

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
15 [报告]
发表于 2013-01-17 17:26 |只看该作者
各路大神,你们都在讨论神马~~~~~~

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
16 [报告]
发表于 2013-01-17 17:26 |只看该作者
理论上说其实没什么不可以的,只不过一开始POSIX的API就这么定了,所以后来者只好延续传统。
当然,尽管mutex和cv分开导致API多了一个参数,但把mutex放在cv里面也会有其它的问题。
cv本身只是一个通知机制,POSIX标准允许pthread_cond_wait在不同的调用中使用不同的mutex,如果把cv和mutex绑在一起就失去了这种灵活性。

论坛徽章:
0
17 [报告]
发表于 2013-01-17 17:31 |只看该作者
回复 16# windoze

是不是mutex开销很大,使用用户定义的mutex,即不耽误用户自己使用,同时也实现了预期的功能,减少了开销。
   

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
18 [报告]
发表于 2013-01-17 17:47 |只看该作者
本帖最后由 windoze 于 2013-01-17 17:48 编辑

回复 17# iw1210

应该还好吧,在各种同步方式中,mutex应该算是最便宜的吧,就是一个小数据结构加一个spinlock。
不过考虑到POSIX标准及其前身们的岁数,那个年代也许真得很贵也不一定。
Unix系统有正交分解的传统,所以API设计成这样也不意外。

论坛徽章:
0
19 [报告]
发表于 2013-01-17 18:00 |只看该作者
本帖最后由 iw1210 于 2013-01-17 18:03 编辑
windoze 发表于 2013-01-17 17:47
回复 17# iw1210

应该还好吧,在各种同步方式中,mutex应该算是最便宜的吧,就是一个小数据结构加一个spinlock。
不过考虑到POSIX标准及其前身们的岁数,那个年代也许真得很贵也不一定。
Unix系统有正交分解的传统,所以API设计成这样也不意外。


致敬!  问一下,UNIX里的正交分解是什么意思?

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
20 [报告]
发表于 2013-01-17 18:09 |只看该作者
回复 19# iw1210


Unix的一个设计原则就是,每个功能都要在保持完整的前提下尽量的小,也就是常说的高内聚低耦合。
以上面的mutex和cv为例,cv用来保存和检查状态,mutex用来做同步和并发控制,这两组功能是独立的,各自可用。


PS. 好吧,POSIX中cv不能离开mutex使用,但是理论上说其实也不是非这样不可,没有mutex的cv无非就是会有一些race condition罢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP