关于C#原子操作

asggg 2006-04-09 03:35:49
有一个int的变量i正在进行加1原子操作,在该操作期间,i是不能被其他线程写入新的数据的,但i的此时的数据可否被其他线程读出呢?
...全文
652 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sfanpu 2006-06-01
  • 打赏
  • 举报
回复
可以使用Monitor类
diandian82 2006-04-09
  • 打赏
  • 举报
回复
使用mutex对象也可以
fangzhe 2006-04-09
  • 打赏
  • 举报
回复
但是,编译器发现他是一个原子指令后,便会用一定的机制保障他在执行过程中不被打断
  • 打赏
  • 举报
回复
同样是 a+1,不同的编译系统,或者同一编译系统,可能不同情况下编译出机器代码指令是不同的,可能编译为一条指令,也可能编译为多条指令,甚至几千指令(例如你对一个自定义业务类型+1并且定义或者说重载了这个操作符的时候)。
  • 打赏
  • 举报
回复
是真的。所谓原子操作,就是编译出来的cpu的指令和微指令都是“原子”的。cpu每一次处理一条指令,然后才可能切换到另一个线程上(准确地说这是操作系统通过硬件中断做的,不是cpu主动这么做的)。
chenyuming2004 2006-04-09
  • 打赏
  • 举报
回复
用lock
asggg 2006-04-09
  • 打赏
  • 举报
回复
谢谢你 请问你说的是真的吗?
这个我无法验证啊?是真的吗?
原子操作的变量是不能被其他线程进程读或写的操作对吗???
fangzhe 2006-04-09
  • 打赏
  • 举报
回复
原子操作是不可分的~怎么能读出呢?

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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