如何写出原子操作的语句?

yangss2006 2008-05-04 07:59:57
请教原子操作就是没有办法中断的操作的吧!那么一个C语句往往会分解成若干条汇编语句,而且在这些语句中,没有什么措施可以保证不被中断吧?
请教了,*p = 123;这么一条赋值语句能写成原子操作的形式吗?
...全文
101 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
c265n46 2011-04-12
  • 打赏
  • 举报
回复
不知道这个老帖子现在还能不能回。不过我最近看了PTypes的源码,
它里面有这样的一个文件"patomic.cxx"

里面是这样实现一个值交换的原子操作的

int __fastcall pexchange(int* target, int value)
{
int r = *target;
*target = value;
return r;
}

__fastcall 使用寄存器传参,在线程切换时会保存现场。因此多线程也不会影响。
mymtom 2008-05-04
  • 打赏
  • 举报
回复
应用程序通常不需要这种层次的操作. 如果有需要, 通常是在多线程和多进程的情况下,可以使用信号量解决.
操作系统的层次上,需要硬件指令的支持(如SWAP), 在必要的情况下用开关中断的指令实现(CLI, STI)原子操作.

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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