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