C中的叉子概念#
回答
這更是一個比C#.NET/CLR的事情。通常,這是底層操作系統的問題。 Windows不支持產生新進程的類似於語義的fork()
。另外,fork()
與多線程支持無關。
fork()
的語義涉及複製原始進程的地址空間的內容。我的觀點是這是一個過時的過程創建方法,在Windows世界中幾乎沒有任何空間,因爲它涉及到很多安全和操作系統架構問題。
從.NET的角度來看,fork()
的基本問題將是複製和/或共享非託管資源(文件句柄,同步對象,窗口句柄(!)等)新的過程。我認爲沒有理由將這種概念引入.NET或底層的Windows操作系統。
有關進一步討論,請參見saurabh的鏈接。
我能想到的一個嚴重的原因是處理死鎖(線程分叉)。這是一個先進的想法。但是,推送和彈出線程狀態(分叉和休眠新線程)以及被鎖定對象的版本控制可能允許您在死鎖可能出現之前彈出。 (注意:死鎖可以防止數據損壞......你可以讓它們都去,但數據不會獨佔鎖定 - 即使一次只運行一個線程)。這給了我們非死鎖的原子對象(甚至數據庫死鎖)。這是一個嚴重的原因。 – TamusJRoyce 2012-08-04 05:02:54
請注意,'fork'實際上不會在.NET上提供任何所需的效果。 'fork'在多線程應用程序中運行不好,它會導致所有其他線程被終止。由於至少有一個GC線程正在運行,因此每個定義的.NET應用程序都是多線程的。 – Sebazzz 2017-09-13 12:25:00
- 1. C++概念:CRTP
- 2. C#3.0中的概念
- 3. jdbctemplate概念和c#
- 4. C++概念循環
- 5. C++的模塊概念
- 6. 回調的概念(C#)
- 7. Solr:子查詢概念
- 8. Winforms中的主子頁面概念
- 9. sqlite概念到coredata的概念?
- 10. Actionscript-Javascript中的C++指針的概念
- 11. C++中的虛函數的概念
- 12. C中函數指針的概念?
- 13. C語言中的線程概念#
- 14. C++ Concepts Lite:概念體中的短路
- 15. C中的類型聲明(概念)
- 16. C預處理器概念
- 17. C CLI遊戲概念
- 18. C基本編程概念
- 19. C++類:概念類Doppelganger:LNK2005
- 20. C#繼承概念建議
- 21. 目標C概念解釋
- 22. C++概念和std :: cout
- 23. C++程序線程概念
- 24. C++連續序列概念
- 25. 概念
- 26. 概念
- 27. C++概念:無效引用功能概念
- 28. Postfix的概念
- 29. 如何在數據庫表中創建二叉樹的概念?
- 30. 母版頁和子頁面的概念!
就像在UNIX命令fork?在那種情況下,沒有。 – 2010-10-12 09:21:34