社区
C#
帖子详情
关于C#原子操作
asggg
2006-04-09 03:35:49
有一个int的变量i正在进行加1原子操作,在该操作期间,i是不能被其他线程写入新的数据的,但i的此时的数据可否被其他线程读出呢?
...全文
652
8
打赏
收藏
关于C#原子操作
有一个int的变量i正在进行加1原子操作,在该操作期间,i是不能被其他线程写入新的数据的,但i的此时的数据可否被其他线程读出呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sfanpu
2006-06-01
打赏
举报
回复
可以使用Monitor类
diandian82
2006-04-09
打赏
举报
回复
使用mutex对象也可以
fangzhe
2006-04-09
打赏
举报
回复
但是,编译器发现他是一个原子指令后,便会用一定的机制保障他在执行过程中不被打断
以专业开发人员为伍
2006-04-09
打赏
举报
回复
同样是 a+1,不同的编译系统,或者同一编译系统,可能不同情况下编译出机器代码指令是不同的,可能编译为一条指令,也可能编译为多条指令,甚至几千指令(例如你对一个自定义业务类型+1并且定义或者说重载了这个操作符的时候)。
以专业开发人员为伍
2006-04-09
打赏
举报
回复
是真的。所谓原子操作,就是编译出来的cpu的指令和微指令都是“原子”的。cpu每一次处理一条指令,然后才可能切换到另一个线程上(准确地说这是操作系统通过硬件中断做的,不是cpu主动这么做的)。
chenyuming2004
2006-04-09
打赏
举报
回复
用lock
asggg
2006-04-09
打赏
举报
回复
谢谢你 请问你说的是真的吗?
这个我无法验证啊?是真的吗?
原子操作的变量是不能被其他线程进程读或写的操作对吗???
fangzhe
2006-04-09
打赏
举报
回复
原子操作是不可分的~怎么能读出呢?
C#
中使用Interlocked进行
原子操作
的技巧
使用.NET提供的Interlocked类可以对一些数据进行
原子操作
,看起来似乎跟lock锁一样,但它并不是lock锁,它的
原子操作
是基于CPU本身的,非阻塞的,所以要比lock的效率高
c#
线程(thread)同步处理
.NET平台上的线程同步的问题线程之间共享的变量访问的同步,它的操作时
原子操作
,且被线程共享.你可以通过Interlocked.Increment 或 Interlocked.Decrement来增加或减少共享变量.它的有点在于是
原子操作
,也就是说...
分布式缓存技术Redis在
C#
中的使用
Redis是一款开源的、高性能的键-值存储(key-value store)。... 对于这些数据类型,你可以执行
原子操作
。例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集、并集与差集等。
Redis在
C#
中的使用
Redis是一款开源的、高性能的键-值存储(key-value store)。... 对于这些数据类型,你可以执行
原子操作
。例如:对字符串进行附加操作(append);递增哈希中的值;向列表中增加元素;计算集合的交集、并集与差集等。
C#
多线程编程中的锁系统(二)
这一次我们说说升级锁和
原子操作
。 目录 1:volatile 2: Interlocked 3:ReaderWriterLockSlim 4:总结 一:volatile 简单来说: volatile关键字是告诉
c#
编译器和JIT编译器,不对volatile标记的字段做任何的缓存。...
C#
110,532
社区成员
642,574
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章