对于非常短的临界区,自旋锁(繁忙等待锁)比互斥休眠锁更有效。假设系统的上下文切换时间(保存当前进程并加载下一个进程所需的时间)是T。临界区需要多长时间才能使用互斥休眠锁而不是自旋锁更有效?
发布于 2015-07-19 22:57:30
这取决于具体的情况。为了更快地唤醒,你愿意在旋转中消耗多少cpu时间?
英特尔曾经说过20个周期。但这是很久以前的事了,线程比内核多得多。
如果你的等待线程对你来说非常关键,它会有它自己的专用核心,你不会关心为了最终最快的唤醒而永远旋转。
如果它不是那么关键,并且内核与其他线程共享,那么您可能希望将cpu时间分配给其他线程。如果你不这样做,操作系统最终会帮你做到这一点,但这显然不是最优的。
底线-测试并查看性能上的差异,然后重新迭代、重新测试等。
https://stackoverflow.com/questions/29691045
复制相似问题