gpt4 book ai didi

c# - 在多线程应用程序中使用 Thread.Sleep 的原因是什么?

转载 作者:行者123 更新时间:2023-11-30 13:28:28 27 4
gpt4 key购买 nike

当我看到一些多线程代码时,我经常会在代码中看到 Thread.Sleep() 语句。

我什至在试图找出问题所在时崩溃了,所以注释掉了大部分多线程代码并慢慢引入它,最后一 block 添加了一个 for 语句,如:

for ( int i = 0; i < 1000000; ++i )
++i;

它没有崩溃。所以现在我替换了它 Thread.Sleep() 并且它似乎可以工作。我无法轻松复制它以将其发布在这里,但是使用 Thread.Sleep() 是多线程应用程序所必需的吗?

他们的目的是什么?如果不使用会导致意想不到的结果吗?

编辑:顺便说一句,我正在使用 BackgroundWorker 并且只在其中实现我的东西,但不确定是什么原因导致的。尽管我使用的 API 是托管应用程序,但该应用程序不是多线程的。因此,例如我认为我不能同时在多个线程上调用它的 API 函数。不确定,但那是我的猜测。

最佳答案

通常,Thread.Sleep 是糟糕设计的标志。也就是说,这比占用 100% 的 CPU 核心时间要好得多,这就是上面的 for 循环正在做的事情。

一个更好的选择通常是使用 WaitHandle,例如 ManualResetEvent,当“事件”(这就是原因延迟)发生。或者,在许多情况下,使用 Timer 也同样有效。

关于c# - 在多线程应用程序中使用 Thread.Sleep 的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5477133/

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