就CPU时间而言,等待互斥与等待信号量

就CPU时间而言,等待互斥与等待信号量,c,multithreading,mutex,semaphore,C,Multithreading,Mutex,Semaphore,我想知道在CPU使用方面,等待一个锁定的互斥和等待一个锁定的信号量是否有什么区别。 根据手册页,在这两种情况下,线程都会阻塞,这意味着它会被转移到等待队列,因此不会占用CPU时间 相反,我确实看到了一些地方和答案,声称等待互斥锁会导致繁忙的等待,这意味着浪费CPU时间是徒劳的 如果你能解释一下两者是否有区别,我将不胜感激 编辑:我的问题可能是重复的,但是,正如我所指出的,我在这个论坛的其他一些地方看到了相反的答案,声称等待互斥是一种忙碌的等待。当然这取决于您使用的操作系统和编译器实现 然而,由于

我想知道在CPU使用方面,等待一个锁定的互斥和等待一个锁定的信号量是否有什么区别。 根据手册页,在这两种情况下,线程都会阻塞,这意味着它会被转移到等待队列,因此不会占用CPU时间

相反,我确实看到了一些地方和答案,声称等待互斥锁会导致繁忙的等待,这意味着浪费CPU时间是徒劳的

如果你能解释一下两者是否有区别,我将不胜感激


编辑:我的问题可能是重复的,但是,正如我所指出的,我在这个论坛的其他一些地方看到了相反的答案,声称等待互斥是一种忙碌的等待。

当然这取决于您使用的操作系统和编译器实现


然而,由于互斥可以实现为信号量的一个版本,那么最坏的情况是互斥作为信号量执行。没有理由对其进行效率更低的编码。

的可能重复在理想情况下,线程永远不会等待互斥锁。当然,这在现实中是可能发生的,这就是为什么我们有互斥体;但是在一个设计良好的程序中,线程等待互斥锁的时间不应该超过一微秒。这就是为什么一些互斥实现在多CPU系统上运行时,会在返回到真正的等待状态之前尝试旋转一小段时间。