2009-02-25 129 views
1

長話短說 - 先看this article,然後看this article。簡而言之 - 這是關於ASP.NET的老問題,並隨意在線程間切換。那麼,實際上並非如此隨機。正如第二篇文章所解釋的,這隻發生在「當你的線程執行異步IO操作時」。所以......在這種情況下,異步IO操作到底是什麼?我熟悉標準Begin ... End ... IAsyncResult和異步IO的事件模型。但我不明白這是如何與一個線程開關綁定在一起的。什麼是.NET中的「異步IO操作」?

重點是 - 我只是害怕我的軟件可能會做的任何「隱藏」異步IO(然後會引發線程切換)。但如何識別它們?

回答

1

異步IO操作是指調用線程不會阻塞以等待IO的情況。示例包括對流,網絡連接等的BeginXXX操作。

當您使用BeginXXX設置調用時,線程池線程將用於執行回調,而設備驅動程序通常處理實際的IO。因此可能涉及許多不同的線程。

+0

是的,我明白了。但是頁面處理仍然會在同一個線程上進行(除了回調)。但是,ASP.NET有時會將頁面處理移動到另一個線程。 – 2009-02-25 09:12:41