2010-10-12 16 views
10

Ponieważ C# obsługuje wątkowanie, czy istnieje sposób implementacji koncepcji fork w języku C#?Koncepcja widelec w C#

góry dzięki ....

+0

Jak w rozwidleniu polecenia unix? W takim przypadku nie. –

Odpowiedz

18

To jest bardziej kwestia .NET/CLR niż C#. Zasadniczo jest to kwestia podstawowego systemu operacyjnego. Okna nie obsługują podobnej semantyki tworzenia nowych procesów. Ponadto, fork() nie ma nic wspólnego z obsługą wielowątkowości.

Semantyka fork() polega na powielaniu zawartości przestrzeni adresowej oryginalnego procesu. Moim zdaniem jest to przestarzałe podejście do tworzenia procesów i prawie nie ma miejsca w świecie Windows, ponieważ wiąże się to z wieloma problemami związanymi z bezpieczeństwem i architekturą systemu operacyjnego.

Z punktu widzenia .NET, podstawowym problemem z fork() byłoby podejście do powielania i/lub dzielenia zasobów niezarządzanych (uchwyty plików, obiekty synchronizacji, uchwyty okienne (!) Itp.) Pomiędzy starszymi a nowy proces. Myślę, że nie ma poważnego powodu, aby wprowadzić taką koncepcję do .NET lub do bazowego systemu operacyjnego Windows.

W celu dalszej dyskusji zobacz link saurabha.

+0

Jednym z poważnych powodów, dla których mogę myśleć, jest obsługa zakleszczeń (rozwidlanie nitek). To zaawansowany pomysł. Ale pchanie i popychanie stanów nici (rozwidlanie i zasypianie nowego wątku) wraz z wersją blokowanych obiektów może pozwolić ci na ponowne pojawienie się, zanim pojawią się zakleszczenia. (Uwaga: zakleszczenia zapobiegają uszkodzeniu danych ... możesz pozwolić im oboje odejść, ale dane nie będą już blokowane wyłącznie - nawet jeśli działa tylko jeden wątek na raz). Daje nam to niezakłócone obiekty atomowe (nawet zakleszczenie baz danych). To jeden poważny powód. – TamusJRoyce

+0

Należy zauważyć, że 'fork' nie dostarczałby żadnych pożądanych efektów na .NET. 'fork' nie działa dobrze w aplikacjach wielowątkowych, powoduje zakończenie wszystkich innych wątków. Aplikacja .NET jest z definicji wielowątkowa, ponieważ działa przynajmniej wątek GC. – Sebazzz