2010-06-20 107 views
3

在.NET中進行異步調用時,我明白這個調用是在單獨的線程中解決的,因此不會阻塞進行調用的原始線程。異步線程的機制

這項工作背後的機制如何。是在每個異步調用上生成一個新線程,還是有共享異步線程來處理這些操作?如果它是一個共享線程,則在執行時執行多個異步調用。如果生成單獨的線程,如果在同一時間範圍內進行多次異步調用,由於線程運行太多,線程將不會遇到嚴重的性能問題。

回答

2

我相信這個MSDN文章應該回答你所有的問題。請注意,你的絕大多數直覺事實上是正確的。所有你需要做的就是研究細節。

Programming the Thread Pool in the .NET Framework

+0

更具體地說,異步I/O排隊到作爲.NET線程池一部分的I/O完成端口。完成例程由線程池線程處理。異步計算只能在線程池線程上運行。 IIRC。 :) – 2010-06-20 01:05:18

+0

@Stephan - 你確實記得正確。我覺得這篇文章一般適合這個法案,因爲'ThreadPool'就是所有魔法發生的地方。 – ChaosPandion 2010-06-20 01:13:36

0

我將承擔.NET框架使用其任何異步除非你專門創建和啓動一個新線程自己線程池。