我爲我的特定需求進行了優化的自定義ThreadPool。但是,當進程中有多個AppDomain時,CLR ThreadPool能夠在所有AppDomain中共享,並且我希望能夠重現此行爲。.Net如何創建跨進程的所有AppDomain共享的自定義ThreadPool?
這可以使用MarshalByRefObject和Remoting來完成,以創建一個分佈式的ThreadPool,但我擔心它會增加不需要的開銷,因爲自定義線程池的關鍵目標是性能。
另一個理論上的解決方案是使用非託管對象破解AppDomain內存邊界。如果我是正確的,AppDomain中的內存邊界僅適用於託管對象,所以每個AppDomain中都可能有一個託管包裝指向同一個非託管對象。
所以我的問題是:
- 有沒有一種方法,使利用遠程與 最小的開銷定製 線程池?
- 如果不是,是否可以在AppDomain之間共享一個非託管的 對象?
是什麼促使編寫自定義線程池的決定? .NET線程池中缺少哪些功能? – Walter
CLR ThreadPool無法優先排列隊列中的工作項。 CCR Dispatcher提供了一些很好的可能性,我認爲CCR Dispatcher和CLR ThreadPool之間的混合會很有趣。 –