如何在后台实现C ++互斥锁?它是仅使用Decker,Peterson或其他算法来实施互斥,还是使用硬件支持,例如中断广告比较和交换(CAS)。
是否有可能在没有任何硬件支持的情况下实现由互斥量和条件变量组成的整个多线程库?
在Windows上使用Windows API。您可以尝试询问Microsoft。
标准库实现不会直接进行硬件访问。这就是操作系统的用途。
并没有真正要求std::mutex
将基于操作系统调用,并且根本没有操作系统调用。
理论上,std::mutex
只能旋转互斥量。
它也可能仅阻止互斥。
实际上,一个好的实现首先会尝试使用atomic处理阻塞,但是当采取等待措施时,它将进行OS等待。