2009-07-02 12 views
9

एक Linux सिस्टम पर, बच्चे प्रक्रिया माता पिता प्रक्रिया के रूप में एक ही तरह से मौजूदा धागे देखते हैं?कांटा और मौजूदा धागे?

int main() { 

    //create thread 1 

    int child_pid = fork(); 

    if (0 == child_pid) 
    { 
     .. 
    } 
    else 
    { 
     .. 
    } 

के बाद से पूरे पता स्थान बच्चे की प्रक्रिया के लिए नकल की जाती है क्या धागे की स्थिति में होता है। क्या होगा अगर उपरोक्त सेगमेंट में थ्रेड 1 सशर्त सिग्नल पर इंतजार कर रहा है। क्या यह बाल प्रक्रिया में प्रतीक्षा स्थिति में भी है?

उत्तर

0

धागे कांटा का उपयोग कर एक Linux सिस्टम पर एक बच्चे की प्रक्रिया से नहीं ली गई()। एक गहन स्रोत यहां है: http://linas.org/linux/threads-faq.html

+2

कि अकसर किये गए सवाल बहुत पुराना हो चुका है। सबसे बड़ा उपयोगकर्ता के अंतर दिखाई है कि LinuxThreads कभी कर्नेल 2.6 और glibc 2.3, जो गैर POSIX की तरह सूत्रण व्यवहार के साथ सभी लंबित मुद्दों का समाधान करता है के बाद से NPTL द्वारा अप्रयुक्त किया गया है। – ephemient

13

लिनक्स पर थ्रेड आजकल पॉज़िक्स के अनुरूप रहने की कोशिश करता है। केवल बुला धागा दोहराया जाता है, अन्य थ्रेड नहीं (ध्यान दें सोलारिस कि जैसे आप क्या कांटा क्या पुस्तकालय आप लिंक के आधार पर करता है चुना जा सकता है) http://www.opengroup.org/onlinepubs/000095399/functions/fork.html से

:

एक प्रक्रिया एक साथ बनाया जा जाएगा एकल धागा। यदि एक बहु थ्रेडेड प्रोसेस कॉल फोर्क(), नई प्रक्रिया में कॉलिंग थ्रेड और इसकी संपूर्ण पता स्थान, संभवतः म्यूटेक्स और अन्य संसाधनों सहित राज्यों की प्रतिलिपि होगी। नतीजतन, त्रुटियों से बचने के लिए, बाल प्रक्रिया केवल एसिंक-सिग्नल-सुरक्षित संचालन को तक निष्पादित कर सकती है जैसे निष्पादन कार्यों में से एक कहा जाता है। कांटा संचालकों साधन आदेश कांटा भर में आवेदन अपरिवर्तनशीलताओं बनाए रखने के लिए pthread_atfork() फ़ंक्शन का द्वारा स्थापित किया जा सकता है() कहते हैं।

+1

धन्यवाद। लिंक बहुत मददगार है। – Mac13

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