多个线程读变量的问题

gdstx 2013-03-04 12:35:21
多个线程读取某个复杂类型的变量(只是读, 没有写), 请问不加锁可以吗?
...全文
210 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2013-03-06
  • 打赏
  • 举报
回复
不用加,也不存在读一致性问题,因为数据不会变。
  • 打赏
  • 举报
回复
加锁是为了防止连续代码不能被串行执行 如果你只是读取一个简单变量的话那应该无所谓 但有些情况是要考虑到的,比如你要读取的量A、B、C 这几个量之间有某种耦合关系,类似A方+B方=C方 为了保证数据一致性,那这个时候就要加锁的 加锁的本质是创建系统内核对象,会带来比较大的系统开销 在不影响系统正常运行的情况下应该尽可能的避免加锁操作
信阳毛尖 2013-03-05
  • 打赏
  • 举报
回复
只读不写的话,可以不用加锁的
wltg2001 2013-03-04
  • 打赏
  • 举报
回复
可以不加的。
gdstx 2013-03-04
  • 打赏
  • 举报
回复
引用 2 楼 skywoodsky 的回复:
不会变?那不是常量了?常量可以不加锁 会变的话 要加锁
该变量在线程执行之前是变的, 在线程执行时是不变的
skywoodsky 2013-03-04
  • 打赏
  • 举报
回复
不会变?那不是常量了?常量可以不加锁 会变的话 要加锁
孤客天涯 2013-03-04
  • 打赏
  • 举报
回复
如果程序中没有一个地方对它写,理论是没关系,保险一点还是加上
MoreWindows 2013-03-04
  • 打赏
  • 举报
回复
只读不写,不要加锁。 多线程方面,推荐参考下《秒杀多线程面试题系列》 http://blog.csdn.net/column/details/killthreadseries.html

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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