gpt4 book ai didi

c# - Monitor.Pulse 和 Monitor.PulseAll 之间的区别

转载 作者:IT王子 更新时间:2023-10-29 04:15:21 27 4
gpt4 key购买 nike

Monitor.PulseAll 通知队列中的所有等待线程

Monitor.Pulse 通知等待队列中的一个线程。 (下一个等待线程)

只有下一个线程(一个线程)才能获取锁。那有什么区别呢?

什么时候应该使用 PulsePulseAll

最佳答案

当您想要唤醒多个线程时,请使用PulseAll,因为它们正在等待的条件现在可能已被多个线程满足。 (等待几乎总是与条件相关联 - 您通常应该在 while 循环中测试该条件。)

当您只想唤醒一个线程时使用Pulse,因为实际上只有一个线程能够完成有用的工作。

打两个比方:

假设您只有一台打印机。一次只有一个人可以使用它,所以如果有很多人在等,你可以让他们全部进入休眠状态——但是当打印机空闲时你只会叫醒一个人。这反射(reflect)了 Pulse 的使用。

现在假设您经营一家商店。当你关门时,顾客在店外等候。当您开店时,您不只是想叫醒一位顾客——他们现在都可以进来了。这反射(reflect)了 PulseAll 的使用。

关于c# - Monitor.Pulse 和 Monitor.PulseAll 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675352/

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