gpt4 book ai didi

.net - Thread.SpinWait 方法的目的是什么?

转载 作者:行者123 更新时间:2023-12-03 05:41:22 26 4
gpt4 key购买 nike

来自MSDN并不太清楚其目的。

可以用来模拟密集的CPU计算测试吗?

最佳答案

它用作非常短期的 sleep 调用的替代品。

当您进行多线程锁定时,如果您尝试获取的资源已被锁定,您通常会进入休眠状态并等待其释放。当您这样做时,您就放弃了调度程序为您分配的剩余时间来使用处理器,以便其他人可以尝试。通常这没什么问题,特别是对于长时间等待,例如等待 IO,当您等待磁盘主轴旋转时,其他进程的负载可以在 CPU 上运行。

但是,有时,您需要等待很短的时间。在这些情况下,您通常会放弃剩余的时间,并等待所有其他线程完成其工作,然后再进行另一次操作。因此您可以作弊,而不是等待,您坐在那里不断地轮询“我们快了吗?”到了吗?方式。如果锁定仅保留剩余时间的一小部分,那么这将成为一种非常有效的等待方式,它也非常高效,因为调度程序不必参与重新安排所有其他线程来使用您放弃的时间如果你正常等待的话。

显然,如果你每次想要锁时都旋转,你就不会很受欢迎,你的应用程序会变得迟缓并使用 100% CPU,但在非常小的剂量下,在正确的时间,它会使应用程序响应速度更快。

如果你现在在想“我什么时候应该使用它?”,这是一个棘手的调用 - 如果你有一个经常被锁定和快速解锁的资源,那么围绕它的自旋锁而不是等待一个好主意(然后测试您的应用程序的性能),如果您尝试旋转一小段时间,然后回到正常等待,这也是一个合理的方法。但一般来说,您永远不需要使用它。

关于.net - Thread.SpinWait 方法的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1091135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com