我的意思不是从 C++ 中接口的角度来看,而是从操作系统方面来看,这些概念之间的真正区别是什么。
尝试用谷歌搜索,但在不同的资源上我只发现这些概念的描述非常相似。
原子是 CPU 必须在核心之间保持同步的一个值,当一个线程更改其值时,CPU 使用特殊指令来保证这一点。
操作系统负责调度线程执行,当信号量将要递减到0以下时,线程向操作系统发出
syscall
以挂起自己,直到信号量被另一个线程递增,然后操作系统将重新安排该线程的执行。
信号量基本上是一个具有特殊属性的原子,如果您尝试将其递减到 0 以下,您将被挂起,直到另一个线程递增该信号量。