gpt4 book ai didi

c# - 等待方法不占用资源

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

WaitOne公开的类似AutoResetEvent方法的线程阻塞方法如何不占用资源(CPU等)?

我想像这样的方法只会有一个while循环,例如:

public void WaitOne()
{
while(IsSet == false)
{
// some code to make the thread sleep
}

// finally call delegate
}

但这显然是错误的,因为它将使CPU旋转。那么,所有这些黑魔法背后的 secret 是什么?

最佳答案

该方法在内核中实现。对于尚未准备好运行的每个线程,Windows会保留该线程正在等待的所有可等待对象(事件等)的列表。当发出可等待对象的信号时,Windows将检查它是否可以唤醒任何等待线程。无需轮询。

这个 channel 9的演讲提供了很多有关其工作方式的信息:
http://channel9.msdn.com/shows/Going+Deep/Arun-Kishan-Farewell-to-the-Windows-Kernel-Dispatcher-Lock/

关于c# - 等待方法不占用资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905333/

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