自增自减是不是原子操作?

aoyihuashao 2010-06-30 09:05:20
VC6
VS2005


++i
--i
i++
i--
...全文
747 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-06-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 macrojj 的回复:]
当然不是。但是如果是Windows下你可以用InterlockedExchangeAdd
[/Quote]
要原子操作就是它了
所有一般运算符都不是原子操作
macrojj 2010-06-30
  • 打赏
  • 举报
回复
当然不是。但是如果是Windows下你可以用InterlockedExchangeAdd
do_fork 2010-06-30
  • 打赏
  • 举报
回复
显然不是,即使翻译成机器指令后只有一条指令,也未必是原子操作
pengzhixi 2010-06-30
  • 打赏
  • 举报
回复
不是的,你可以用系统提供的函数来自增自减
taodm 2010-06-30
  • 打赏
  • 举报
回复
可以结贴了。
冻结 2010-06-30
  • 打赏
  • 举报
回复

i++;
00411395 mov eax,dword ptr [i]
00411398 add eax,1
0041139B mov dword ptr [i],eax

++i;
00411395 mov eax,dword ptr [i]
00411398 add eax,1
0041139B mov dword ptr [i],eax

--i;
00411395 mov eax,dword ptr [i]
00411398 sub eax,1
0041139B mov dword ptr [i],eax

i--;
00411395 mov eax,dword ptr [i]
00411398 sub eax,1
0041139B mov dword ptr [i],eax
jiuchang 2010-06-30
  • 打赏
  • 举报
回复
操作本身是,但是要取返回值,就变成不是了
冻结 2010-06-30
  • 打赏
  • 举报
回复
不是。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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