信号量和原子整数有什么区别?

问题描述 投票:0回答:1

我的意思不是从 C++ 中接口的角度来看,而是从操作系统方面来看,这些概念之间的真正区别是什么。

尝试用谷歌搜索,但在不同的资源上我只发现这些概念的描述非常相似。

c++ concurrency operating-system synchronization
1个回答
0
投票

原子是 CPU 必须在核心之间保持同步的一个值,当一个线程更改其值时,CPU 使用特殊指令来保证这一点。

操作系统负责调度线程执行,当信号量将要递减到0以下时,线程向操作系统发出

syscall
以挂起自己,直到信号量被另一个线程递增,然后操作系统将重新安排该线程的执行。

信号量基本上是一个具有特殊属性的原子,如果您尝试将其递减到 0 以下,您将被挂起,直到另一个线程递增该信号量。

© www.soinside.com 2019 - 2024. All rights reserved.