免费注册 查看新帖 |

Chinaunix

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

[C++] 我想问大家一个问题就是C++中多个线程修改一个对象的引用用加锁么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-20 23:13 |只看该作者 |倒序浏览
我想问大家一个问题就是C++中多个线程修改一个对象的引用用加锁么?

最近遇到了多线程的问题,之后通过加锁解决了,但是我一想,如果修改对象引用这个操作在多线程下安全(即不是不线程安全)。那岂不是程序那里都要加锁了,所以我想应该修改引用操作本身就是线程安全的(至少我的程序从来没有因为修改同一个对象的引用出现线程不安全),但是又没有找到权威的证明(即在MSDN中没有找到同一个对象修改引用时线程安全这句话……),所以想大家请教。希望给出答案的出处 ^_^

其实本问题我原本是以C#来问的,但是发现没有人回复…… 特到C++区来讨教,我觉得C++与C#在这一点上应该是相似的,希望大家解答

论坛徽章:
12
巳蛇
日期:2013-09-16 15:32:242015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之约旦
日期:2015-02-11 14:38:37双鱼座
日期:2015-01-05 11:05:47戌狗
日期:2014-12-08 09:41:18戌狗
日期:2014-08-15 09:29:29双子座
日期:2014-08-05 09:17:17卯兔
日期:2014-06-08 15:32:18巳蛇
日期:2014-01-27 08:47:08白羊座
日期:2013-11-28 21:04:15巨蟹座
日期:2013-11-13 21:58:012015年亚洲杯之科威特
日期:2015-04-17 16:51:51
2 [报告]
发表于 2010-11-20 23:22 |只看该作者
这个这个,C++的引用和C#的引用相比较不太好吧。

赚两分,等高手。

论坛徽章:
0
3 [报告]
发表于 2010-11-21 06:30 |只看该作者
本帖最后由 unistd 于 2010-11-21 06:35 编辑

任何语言修改公用的变量都需要加锁.

如果你的方法只是使用局部变量,那就没必要加锁. 而且应该尽量只使用参数来传递必要的值.

所以说,写代码尽量少使用公共的变量, 尽量加强内聚性.

修改一个对象,在大多数情况下也不是线程安全的,因为大多数对象不能在一个时钟周期内完成修改.

论坛徽章:
0
4 [报告]
发表于 2010-11-21 08:46 |只看该作者

论坛徽章:
1
2017金鸡报晓
日期:2017-02-08 10:33:21
5 [报告]
发表于 2010-11-21 12:47 |只看该作者
我只知道c++里面是要加锁的

论坛徽章:
0
6 [报告]
发表于 2010-11-21 14:21 |只看该作者
我只知道c++里面是要加锁的
hzsjx 发表于 2010-11-21 12:47



你在C++中碰到过,多个线程因为修改引用而出的线程不安全问题是么?

论坛徽章:
1
2017金鸡报晓
日期:2017-02-08 10:33:21
7 [报告]
发表于 2010-12-05 12:54 |只看该作者
你在C++中碰到过,多个线程因为修改引用而出的线程不安全问题是么?
art_codes 发表于 2010-11-21 14:21



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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP