加锁实际上是让访问共享资源的线程之间暂时失去并发性?

qscool1987 2012-02-24 11:58:43
加锁实际上是让访问共享资源的线程之间暂时失去并发性。
关于上面这句话对还是不对呢?
我个人认为是正确的。
理由:加锁之后没有获得资源的线程就要等待。打个不太形象的比如,大家一起向食堂冲,打饭时大家就得排队来,打饭的这段时间就打破了原来一起冲的行为。加锁我认为也应该是这样。
如果有不同意见请阐明观点。
...全文
90 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
muyi66 2012-02-24
  • 打赏
  • 举报
回复
这样理解没问题,加锁的目的就是要在自己做完想做的事情前不让别人碰你锁定的东西。

现在的软件公司真够随意的,上次我们在飞机上居然碰到和别人的票重座位的事情。真不知道那程序是怎么通过审核的。
sl51314240 2012-02-24
  • 打赏
  • 举报
回复
本来就是这样的,有啥问题?
赵4老师 2012-02-24
  • 打赏
  • 举报
回复
加锁实际上是让并发访问共享资源会导致冲突的线程之间在访问该资源时不并发而按先后次序逐个访问从而避免冲突。
coding_leezam 2012-02-24
  • 打赏
  • 举报
回复
最近看并行程序设计、我觉得应该是的吧、既然是共享变量、就是应该防止同一时间至少有两个线程访问阿、保护数据的一致性(应该是这样的)、其实可以用原子操作或者用本地变量、加锁解锁代价有点大、
muyi66 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhao4zhong1 的回复:]

引用 4 楼 muyi66 的回复:
这样理解没问题,加锁的目的就是要在自己做完想做的事情前不让别人碰你锁定的东西。

现在的软件公司真够随意的,上次我们在飞机上居然碰到和别人的票重座位的事情。真不知道那程序是怎么通过审核的。

只要是锁,都有失效的时候。
[/Quote]不是所有的失效都可以原谅,这样的失效是不可容忍的
赵4老师 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 muyi66 的回复:]
这样理解没问题,加锁的目的就是要在自己做完想做的事情前不让别人碰你锁定的东西。

现在的软件公司真够随意的,上次我们在飞机上居然碰到和别人的票重座位的事情。真不知道那程序是怎么通过审核的。
[/Quote]
只要是锁,都有失效的时候。
恨天低 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 morebread 的回复:]

引用 6 楼 stjay 的回复:

这个不一定
有种读写锁
读操作可以同时进行的


读本来就是可以同时进行的。加锁一般也是用在写操作上面的吧
[/Quote]
++
morebread 2012-02-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 stjay 的回复:]

这个不一定
有种读写锁
读操作可以同时进行的
[/Quote]

读本来就是可以同时进行的。加锁一般也是用在写操作上面的吧
stjay 2012-02-24
  • 打赏
  • 举报
回复
这个不一定
有种读写锁
读操作可以同时进行的
Kevin_qing 2012-02-24
  • 打赏
  • 举报
回复
就是把并行变成串行

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧