2014-05-23 17 views
0

此前TasksAsync/Await異步編程I/O和CPU密集型任務,使用線程權被做了什麼?與線程

在這種情況下,如何使用線程完成異步編程,而不使用CLR中的更多現代功能。

我問,因爲我有一個項目,需要編譯爲較低版本的.NET Framework。我相信它是第3版。我想了解更多關於單獨使用線程的異步編程。

哪裏是最好的開始和資源有用的地方?

編輯:看來我是有點誤解。我想知道哪些地方是使用線程學習異步編程的最佳位置。我已經意識到任務和異步/等待並在我的項目中使用它們很多。因爲這樣已經讀了有關MSDN上一開始

+0

I/O密集型應用程序使用並仍在使用IOCP。此外,任務和異步/等待不會像您似乎暗示的那樣「取代」線程。它們只是另一個抽象層,在線程之上。 –

+0

@WilliamAndrewMontgomery是的,我知道這一點。線程可以完成任務和異步/等待可以完成的任務......儘管只需要更多的工作。這是我想學習如何去做的。 –

+0

任務由線程支持。這只是一個更清潔的高水平API – TGH

回答

4

如已如前所述,TasksAsync/Await仍然使用線程。他們只是抽象出創建,運行和加入線程的細節。

這是一個相當不錯的教程線程舊版本的.NET:MSDN Threading Tutorial。您將使用System.Threading庫。

0

System.Threading命名空間已在.NET。 .NET中有助於線程化的類(比如backgroundworker)很多都使用這個命名空間的功能。

要開始一個新的線程,你做Thread.Start(),然後從那裏去。

1

在任務和異步/等待之前I/O和CPU密集型任務是使用線程完成的嗎?

他們仍然是。

從.NET的第一天開始,I/O密集型就有了一種非阻塞機制 - 主要是因爲Windows總是擁有它。像Socket的SELECT方法這樣的事情早就回去了。

由於這是在同一時間運行多個事物的唯一方式,所以最終以線程運行:具有OS支持的線程。任務只是線程之上的一個(非常好的)API,可以將它們的使用抽象出來。

哪裏是最好的開始和哪些資源有用?

文檔。 System.THreading命名空間。