考虑一个在专用服务器上运行的最佳线程计数的程序,因此,如果一个线程锁定,则没有其他(几乎)等待CPU时间。在这种情况下,在所有可能的情况下,旋转锁是否比MUTEX更具性能?

编辑]一些解释:由于线程之间没有CPU时间的争论,因此线程可以使用旋转锁定,而不会对其他线程性能产生任何影响。旋转锁不会切换到可能很重的等待模式(至少在Windows上,IDK在Linux上的性能)

有帮助吗?

解决方案

您的前提不是很现实。也许 您的 过程具有最佳的线程数,其余到操作系统有数百个 其他 线程。其中一些可能准备好运行,并在线程产生时很乐意抓住CPU核心。此外,如果将线程封锁,则可能会发生由于过程中其他线程之一的锁定。这可能会在自旋等期间释放它。线程的数量与此无关。因此,自旋等待仍然有意义。

其他提示

我认为Spinlock在这种情况下会更好地工作,除非您试图优化代码,否则并不需要Mutexe的锁,这取决于I/O等的不同时间...您还对等待模式提出了很好的观点。

Spinlock可能会更加最佳,因为没有向内核过渡。但是,这种情况是如此之大,以至于我建议不要尝试将其应用于现实生活代码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top