比方说,我有以下的循环,应尽可能快执行的可能:
如何适当地避免在C#创建线程的开销/重用线程
while(true)
{
A();
B();
C();
}
以下规则: B()才能开始A()完成后,C()只能在B()完成后启动。 B()具有很高的多线程潜力。
如果我在B()内创建新的线程来分割工作,那么与非并行解决方案相比,它会执行得更慢!
我想这是创建线程的开销。
我创建了一个变体,其中B()的并行线程在while(true)循环之外创建。
每个线程都有一个布尔值来表示它已完成,每个线程都有一个布尔值,用于向线程表明它有新的工作要做。
螺纹和C()正在等待他们的延续与下面的代码片断:
while(!boolean)
Thread.Sleep(1);
当B的作业()是非常小的,这是比其它变型慢。当B()具有预期的最大工作量时,它比其他变体更快。
此布尔等待方法似乎是非常低效和愚蠢的...
threadInstance.Resume()已被弃用。
我很确定这是错误的方式。
我的问题的解决方案是什么?
我听说过线程池和任务。那我应该看看?
我避免了这些概念,因为在阅读这些概念时我无法很快理解它们。
请再次阅读线程池。线程池被用来重用线程。实际上,.NET为你准备好了一份! –
*我避免了这些概念,因为在阅读这些概念时我无法很快理解它们。*“我想要一个高性能的多线程应用程序,我想轻松完成,现在我想要它,我想要一只小马” –
“I假设它是线程创建开销。“分析比猜测更可靠。 –