假设我有以下循环,应该尽可能快地执行:
while(true)
{
A();
B();
C();
}
遵循以下规则:B()只有在A()完成后才能启动,C()只能在B()完成之后启动
B()具有很高的多线程潜力
如果我在B()中创建新的线程来分割工作,那么与非并行解决方案相比,它执行得更慢
我想这是线程创建开销
我创建了一个变体,其中B()的并行线程是在while(true)循环之外创建的
线程和C()正在等待它们的延续,其中包含以下片段:
while(!boolean)
Thread.Sleep(1);
当B()的工作量很小时,这比其他变体慢。当B()具有预期的最大功时,它比其他变体更快
这种布尔等待方法似乎非常低效和愚蠢
threadInstance。Resume()已弃用。
无论如何,我确信这是错误的方式
我的问题的正确解决方案是什么
我听说过线程池和任务。这是我应该调查的吗
我避开了那些概念,因为在阅读这些概念时,我不能很快理解它们。
任务。阅读任务。
在b中的所有任务之后的一个任务,当它们完成时,后面跟着C。
您试图用Task API解决很久以前解决的问题(我认为是在.NET 4.0时间框架内)。
正如@TomTom所说,任务API是正确的选择。
任务API是在中引入的。NET 4.0中进行了改进。净4.5。对于以前的。NET版本的异步编程模型(APM)将是正确的方法。