2011-05-19 21 views
14

मल्टीथ्रेड प्रक्रिया को दोहराने के लिए फोर्क() फ़ंक्शन का उपयोग किया जा सकता है। और यदि हां, तो सभी धागे बिल्कुल वही होंगे और यदि नहीं, तो क्यों नहीं। अगर प्रतिकृति कांटा के माध्यम से नहीं किया जा सकता है, तो क्या कोई अन्य कार्य है जो मेरे लिए यह कर सकता है?मल्टीथ्रेडेड कांटा

+0

क्या आपने [यह प्रश्न] देखा है (http://stackoverflow.com/questions/1235516/fork-in-multi-threaded-program)? या [यह एक] (http://stackoverflow.com/questions/1073954/fork-and-existing-threads)? असल में केवल 'फोर्क() 'आईएनजी धागा बाल प्रक्रिया में बचे हैं। आप क्या हासिल करने का प्रयास कर रहे हैं? – Zecc

+0

वास्तव में मैं विश्वसनीय निष्पादन के लिए एक प्रतिकृति प्रक्रिया बनाने की कोशिश कर रहा था, जहां प्रतिकृति प्रक्रिया उसी कोड को निष्पादित करके प्राथमिक प्रक्रिया से आउटपुट को सत्यापित करेगी। – MetallicPriest

उत्तर

13

एक कांटा के बाद, बच्चे में केवल एक धागा चल रहा है। यह एक पॉज़िक्स मानक आवश्यकता है। पर the top answer देखें।

13

नहीं, बच्चे के पास केवल एक धागा होगा। एक थ्रेडेड प्रक्रिया को फोर्किंग तुच्छ नहीं है। (इस लेख को Threads and fork(): think twice before mixing them एक अच्छी रैंडडाउन के लिए देखें)।

मुझे किसी प्रक्रिया और उसके सभी धागे को क्लोन करने के किसी भी तरीके से नहीं पता, मुझे नहीं लगता कि यह लिनक्स पर संभव है।

+2

+1, बहुत ही जानकारीपूर्ण ब्लॉग पोस्ट। – DarkDust

-1

सं

एक कांटा अपने ही धागा (s), प्रतियां फ़ाइल वर्णनकर्ता और आभासी स्मृति के साथ एक नई प्रक्रिया पैदा करता है।

एक बाल प्रक्रिया अपने पिता के साथ समान स्मृति साझा नहीं करती है। तो यह बिल्कुल वही नहीं है।

संबंधित मुद्दे