多线程中volatile的应用

liuling_8008 2011-09-30 02:16:32
多个线程共享一块数据,如何保证使用的正确性。
我在数据操作的时候加锁,操作完毕解锁。数据定义的时候需要使用volatile关键字吗?
另外还需要其他的操作来保证操作的正确性吗?
...全文
112 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuling_8008 2011-10-06
  • 打赏
  • 举报
回复
谢谢大家的回答。
加上的话可以做到每次这个值都不从寄存器中读出,都实际读他的值防止有变化,你特意加锁,当然就是不希望他被修改,当然加不加无所谓,因为如果你的代码无误的话都加锁了,那他就不会在一个线程里使用的时候被另一个线程修改
Kaile 2011-10-03
  • 打赏
  • 举报
回复
volatile 不是锁,起不到锁的作用。
xin_wu_hen 2011-09-30
  • 打赏
  • 举报
回复
既然已经使用锁了,就不必使用volatile了。
volatile只是告诉编译器不要对该变量做优化,以便每次都从内存中都内容。
有关该方面的详细描述,请参考《windows核心编程》。

15,471

社区成员

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

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