Поскольку C # поддерживает многопоточность, есть ли способ реализовать концепцию вилки в C #?
Заранее спасибо....
Поскольку C # поддерживает многопоточность, есть ли способ реализовать концепцию вилки в C #?
Заранее спасибо....
Это больше вопрос .NET / CLR, чем C #. Как правило, это вопрос базовой операционной системы. Windows не поддерживает fork()
-подобную семантику порождения новых процессов. Кроме того, fork()
не имеет ничего общего с поддержкой многопоточности.
Семантика fork()
включает дублирование содержимого адресного пространства исходного процесса. Я считаю, что это устаревший подход к созданию процессов, и он почти не имеет места в мире Windows, потому что он связан с множеством проблем, связанных с безопасностью и архитектурой операционной системы.
С точки зрения .NET, фундаментальной проблемой fork()
будет подход к дублированию и / или совместному использованию неуправляемых ресурсов (дескрипторов файлов, объектов синхронизации, дескрипторов окон (!) И т. Д.) Между старым и новым процессом. Я думаю, что нет серьезных причин вводить такую концепцию ни в .NET, ни в основную операционную систему Windows.
Для дальнейшего обсуждения см. ссылку Саураба.
fork
на самом деле не обеспечит каких-либо желаемых эффектов в .NET. fork
плохо работает с многопоточными приложениями, он вызывает завершение всех остальных потоков. Приложение .NET по определению является многопоточным, потому что выполняется хотя бы поток сборщика мусора.
- person Sebazzz; 13.09.2017