找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 3435|回复: 3

原子操作函数

[复制链接]

307

主题

228

回帖

7319

积分

用户组: 真·技术宅

UID
2
精华
76
威望
291 点
宅币
5569 个
贡献
253 次
宅之契约
0 份
在线时间
945 小时
注册时间
2014-1-25
发表于 2015-7-21 20:04:58 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
函数名        <==>        等价形式
InterlockedIncrement        A++
InterlockedDecrement        A--
InterlockedExchange                A=B
InterlockedExchangeAdd        A+=B
InterlockedExchangeSubtract        A-=B
InterlockedCompareExchange        A==C?B:A
InterlockedAnd        A&=B
InterlockedOr        A|=B
InterlockedXor        A^=B
InterlockedAdd        A+=B
InterlockedExchangePointer        A=B
InterlockedCompareExchangePointer        A==C?B:A
InterlockedBitTestAndSet        A|=2^B
InterlockedBitTestAndReset        A&(2^B)

其他的函数都是内部实现了,,
其实还有针对链表操作的,然而这里我没算在内
回复

使用道具 举报

1109

主题

1649

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24180 个
贡献
46222 次
宅之契约
0 份
在线时间
2294 小时
注册时间
2014-1-26
发表于 2015-7-22 15:34:43 | 显示全部楼层
补充解释:原子操作的意义是在多线程环境下操作多个线程都可能操作的变量,使操作过程不会被其它线程打断。
有时候多个线程一起对一个变量进行加法的时候,通常都是由CPU核心从内存中读取变量,加上一个值,然后再存回到内存,搞不好的话多个线程(比如是两个线程)同时读取一个变量(比如值是2),然后加上一个值(比如是1)之后一起存回内存,变量的值就会出现异常(变成了3,但是因为是多个线程一起运行的,它的值应该是4)。
原子操作解决了这个问题。
回复 赞! 靠!

使用道具 举报

3

主题

7

回帖

56

积分

用户组: 小·技术宅

UID
165
精华
0
威望
1 点
宅币
44 个
贡献
0 次
宅之契约
0 份
在线时间
3 小时
注册时间
2014-3-30
发表于 2015-7-31 00:57:39 | 显示全部楼层
好高大上的概念……
那有没有质子操作、中子操作呀?
回复 赞! 靠!

使用道具 举报

5

主题

43

回帖

197

积分

用户组: 小·技术宅

UID
167
精华
0
威望
3 点
宅币
132 个
贡献
11 次
宅之契约
0 份
在线时间
30 小时
注册时间
2014-3-30
发表于 2015-8-12 15:39:43 | 显示全部楼层
分子操作啊
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-3-29 07:47 , Processed in 0.041370 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表