如何实现一个原子操作?

llm06 2002-11-04 12:16:36
在windows平台下,如何实现原子操作。
我有几句代码,要求在执行的时候不能发生进程、线程切换或者硬件中断切换,也就是这几句代码不能被分割,有没有这样的实现手段?
...全文
126 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zifel 2002-11-10
  • 打赏
  • 举报
回复
笨笨的问:原子操作是不是指Windows系统的内核的操作啊?
swqs 2002-11-10
  • 打赏
  • 举报
回复
深奥啊,实在是不懂:(
horris 2002-11-07
  • 打赏
  • 举报
回复
InterlockedIncrement
InterlockedDecrement
InterlockedExchange
llm06 2002-11-06
  • 打赏
  • 举报
回复
???
FangTchewling 2002-11-06
  • 打赏
  • 举报
回复
自旋锁实际上是与一组数据结构相关联的互斥对象,当内河想要访问这段数据结构时要先获得自旋锁的拥有权。一次只能有一个CPU获得。
有两种一个是中断的,一个是执行的。
具体很琐碎的,看本WDM的书就行了, Art Baker的就有。有什么问题我们再讨论。
llm06 2002-11-05
  • 打赏
  • 举报
回复
自旋锁
FangTchewling(方秋林) 老兄,能详细介绍相关的内容吗?或者哪里有这方面的资料?
FangTchewling 2002-11-04
  • 打赏
  • 举报
回复
如果在Windows平台下,当对全局量操作或之类的不能发生进程、线程切换或者硬件中断切换时,可以使用关中断的方法。
但这个法子不是最好,因为DDK中已经说了不推荐,而且如果是多处理器怎么办?全关?还是只关其中某一个?
所以可以考虑使用自旋锁。
  • 打赏
  • 举报
回复
我只知道关中断
vcsongs 2002-11-04
  • 打赏
  • 举报
回复
是的, 只有在比较高的IRQL上才可以...
zgz 2002-11-04
  • 打赏
  • 举报
回复
windows不是实时系统,么做到这一点很困难,除非你的代码运行在很高的特权级别上(ring0)。
一般在嵌入式系统上要做到原子操作最简单的一种方式就是关中断。

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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