Çok işlevli bir işlemi çoğaltmak için fork() işlevi kullanılabilir. Ve eğer öyleyse, tüm iş parçacıkları tam olarak aynı olacak ve eğer olmasın, neden olmasın. Çoğaltma çatalı ile yapamazsa, benim için yapabileceğimiz başka bir işlev var mı?Çok iş parçacıklı çatalı
cevap
Çatal sonrası, çocukta yalnızca bir iş parçacığı çalışıyor. Bu bir POSIX standart gereksinimidir. fork and existing threads ? sorusuna the top answer bakın.
Hayır, çocuğun yalnızca bir iş parçacığı olacaktır. Dişli bir işlemin yapılması önemsiz değildir. (İyi bir yıkım için bu makaleye bakın Threads and fork(): think twice before mixing them).
Bir işlemi ve tüm iş parçacıklarını klonlamanın herhangi bir yolunu bilmiyorum, bunun Linux üzerinde mümkün olduğunu sanmıyorum.
+1, çok bilgilendirici blog yazısı. – DarkDust
sayılı
bir çatal kendi iplik (ler), kopyalar dosya tanımlayıcı ve sanal bellek ile yeni bir süreç oluşturur.
Bir çocuk işlemi aynı belleği babasıyla paylaşmaz. Yani bu kesinlikle aynı değil.
[Bu soru] 'u gördünüz mü (http://stackoverflow.com/questions/1235516/fork-in-multi-threaded-program)? Veya [bu] (http://stackoverflow.com/questions/1073954/fork-and-existing-threads)? Temel olarak, sadece fork çatal() dişi, çocuk işleminde hayatta kalır. Neyi başarmaya çalışıyorsun? – Zecc
Aslında, yinelenen işlemin, aynı kodu çalıştırarak birincil işlemden çıktıları doğrulayacağı güvenilir yürütme için çoğaltılmış bir işlem oluşturmaya çalışıyordum. – MetallicPriest