足夠簡單的問題,我只需要突破一個最小的混亂牆。C#等待和多線程
因此,基於下面的簡單代碼:
Task task1 = new Task(() =>
{
for (int i = 0; i < 500; i++)
{
Console.WriteLine("X");
}
});
task1.Start();
task1.Wait();
for (int j = 0; j < 500; j++)
{
Console.WriteLine("Y");
}
Console.ReadLine();
因此,基於上述情況,將任務是在它自己單獨的線程和主線程上的其他代碼?
現在就等待而言,我很困惑,因爲我正在指示等待什麼。所以,回到上面的例子,假設現在任務1有工作的一個瘋狂的金額做,在主線程只存在一條語句象下面這樣:
Task task1 = new Task(() => { //insane amount of work to do which might take a while }); task1.Start(); task1.Wait(); Console.WriteLine("HI"); Console.ReadLine();
是等待正好擋住了線程Task1已打開?如果是這樣,那麼在task1完成之前,不應該允許其他線程(主線程)和WriteLine語句執行嗎?還是等待說「沒有線程會運行,直到我完成」?
啊好吧,等等總是指向主線程。我假設這意味着那麼其他任務(如果我有多個任務)在其他線程上仍然可以發生上下文切換? – Ilya 2010-08-17 22:21:58