很抱歉如果这是一个重复的问题,但我不太确定需要使用哪些术语才能找到现有的答案。
我正在尝试改进应用程序的启动性能,伪代码看起来有点像这样。
LoadBigFileFromDisk(); //slow
SetupNetwork(); //even slower
UseBigFileFromDisk();
我发现第一步是磁盘绑定的,而另一个步骤是网络绑定(并且较慢),我可以在后台线程中运行第一步(目前正在尝试使用ThreadPool.QueueUserWorkItem,但不确定是否最佳选择),从而提高性能。 它能够工作,但让我担心的是我依赖第二步足够慢以便第一步完成。
我知道我可以在某个地方设置一个_done boolean,并在while上面加!,但是否有更优雅/惯用的解决方案?
(还没有 .Net 4.0,因此虽然我对基于任务的内容很感兴趣,但我需要其他解决方案)。
Interlocked.Decrement
方法)。 - xanatosmre.WaitOne(); mre.WaitOne();
? - BenjolManualResetEvent
,所以使用mre1.WaitOne()
;mre2.WaitOne()
; - xanatosSetupNetwork
。 - Benjol