Joa*_*nge 3 .net c# parallel-processing multithreading sleep
很多时候,当我看到一些多线程代码时,我会看到Thread.Sleep()代码中的语句.
我甚至遇到了崩溃,我试图弄清楚问题所在,所以大部分的多线程代码都被注释掉了,慢慢地把它带到最后一块,当我添加一个for语句时:
for ( int i = 0; i < 1000000; ++i )
++i;
Run Code Online (Sandbox Code Playgroud)
它并没有崩溃.所以现在我更换Thread.Sleep()它似乎工作.我不能轻易地重新发布它在这里发布,但是Thread.Sleep()对于多线程应用程序是必要的吗?
他们的目的是什么?如果不使用它会导致意想不到的结果吗?
编辑:顺便说一下,我正在使用BackgroundWorker并且只在那里实现我的东西,但不确定是什么原因造成的.虽然我使用的API是托管应用程序,其中应用程序不是多线程的.所以例如我认为我不能同时在几个线程上调用它的API函数.不确定,但那是我的猜测.
通常情况下,这Thread.Sleep是一个糟糕设计的标志.话虽这么说,它比吃100%的CPU核心时间要好得多,这就是上面的for循环所做的.
更好的选择通常是使用a WaitHandle(例如a)ManualResetEvent在"事件"(这是延迟的原因)发生时触发线程执行的继续.或者,Timer在许多情况下使用a 也可以工作.
| 归档时间: |
|
| 查看次数: |
3847 次 |
| 最近记录: |