考慮創建多個應用程序域的過程。這些應用程序域是否共享相同的線程池?如果是,它在多個應用程序域之間如何協調?線程池是否在應用程序域之間共享?
16
A
回答
9
線程池在所有應用程序域共享 - 因爲那意味着線程可能最終應用程序域之間的切換也一直圍繞着PERF工作(可能常常!):
http://blogs.msdn.com/b/ericeil/archive/2009/04/23/clr-4-0-threadpool-improvements-part-1.aspx
[...]事實上,我們違反本「規定」 不已:在 過程中的每個應用程序域,因爲.NET 3.5中,CLR 線程池一直保持獨立的 FIFO隊列,併爲「原生」工作的一個額外的獨立 FIFO隊列我例如由主機 (ASP.net是此 功能的主要用戶)排隊的那些電話 。 這些工作隊列之間我們輪循,讓每個到 前一段時間執行工作移動到下一個。[...]
BTW,注意嚴格來說線程池不共享在整個過程中,因爲v4 CLR允許並行加載V2,並且每個都有自己的線程池。
0
不是100%肯定的,但我認爲線程池是每個進程一次 ,而不是每個AppDomain一次。試着看一下這篇文章的thread & appdomain:
4
線程池的所有應用程序域之間共享,因爲每個線程池線程上下文無關,整個線程池運行時配置文件是高度依賴於硬件,你是在特效的(#運行,超線程等)
每個進程有一個線程池。 線程池的默認大小爲每個可用處理器的25個線程的 。 可以使用 SetMaxThreads方法更改線程 池中的線程數。每個線程使用默認堆棧大小 ,並以 默認優先級運行。
來源:http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx
如果我沒有記錯的CLR內部處理線程池線程和服務工作的另一個請求之前清理線程上下文。
相關問題
- 1. IIS 7.0應用程序池在站點之間共享 - 緩存是否在站點之間共享?
- 2. 是線程池共享 - .net
- 3. 在應用程序之間共享drawables
- 4. 應用程序之間共享在C#
- 5. App Engine - 是否在應用程序版本之間共享memcache?
- 6. 在grails應用程序和非grails應用程序之間共享域對象
- 7. 在應用程序域之間共享內存
- 8. 應用程序域和應用程序池之間的區別?
- 9. 數據在IIS7應用程序池中的工作進程之間共享
- 10. 如何在離線應用程序之間共享數據
- 11. 在兩個類之間共享一個線程池
- 12. IIS 6.0應用程序池共享DLL
- 13. 在線程池中的任務之間但不是在Java線程之間共享對象
- 14. 線程是否在Web模塊之間共享?
- 15. 在線程之間共享數組是否安全?
- 16. 應用程序和共享會話之間的共享DLL
- 17. 任何線程是否應該駐留在線程池之外?
- 18. 在線程組之間共享cookie
- 19. 在Java線程之間共享數據
- 20. 在線程之間共享對象
- 21. 在兩個線程之間共享QAxObject?
- 22. 在線程之間共享類屬性
- 23. 在線程之間共享XPObject對象
- 24. C++ - 在線程之間共享數據
- 25. 在單個應用程序池和工作進程中的應用程序之間共享ASP.NET會話信息
- 26. 是否可以在應用程序域之間移動工作線程
- 27. 從線程池中調用時,boost的io_service共享線程是否爲請求?
- 28. 是否可以在測試應用程序之間共享Facebook測試用戶?
- 29. 如何在多個Java應用程序之間共享連接池
- 30. 如何在線程之間共享處理程序?
這是指向.NET 4最新文檔的鏈接。http://msdn.microsoft.com/en-us/library/system.threading.threadpool.aspx。每個可用處理器有250個工作線程。 – btlog 2010-08-10 10:08:28