थ्रेड्स और फोर्किंग वास्तव में दो अलग-अलग अवधारणाएं हैं, जो दोनों यूनिक्स / लिनक्स सिस्टम में मौजूद हैं (और दोनों का उपयोग C / C ++ में किया जा सकता है)।
एक कांटा () मूल रूप से एक अलग प्रक्रिया का निर्माण है, जिसमें मूल प्रक्रिया के समान निष्पादन कोड है, और जो कांटा लाइन पर निष्पादन शुरू करता है। निष्पादन कार्यों के साथ कांटे का उपयोग करने का उद्देश्य यह है कि निष्पादन कार्य उस प्रक्रिया को बंद कर दें जो उन्हें समाप्त होने पर बुलाया। इसलिए, आप आमतौर पर कांटा करते हैं, प्रत्येक प्रक्रिया की पीआईडी प्राप्त करते हैं (बच्चे हमेशा 0 होता है), और माता-पिता को तब तक प्रतीक्षा करें जब तक कि बच्चा निष्पादन कार्य पूरा नहीं कर लेता।
थ्रेड्स का उपयोग समानता के लिए किया जाता है (याद रखें कि माता-पिता बच्चे पर इंतजार करते हैं, आमतौर पर, एक फोर्कड कार्यक्रम में)। एक धागा, जैसे कि C / C ++ (Google खोज करना) में pthread, मुख्य प्रक्रिया के समानांतर चलेगा, और मूल कार्यक्रम के साथ वैश्विक चर और वैश्विक फ़ंक्शन साझा कर सकता है। चूंकि जावा थ्रेड्स समान रूप से व्यवहार करते हैं, मुझे लगता है कि वे इन थ्रेड्स की तरह एक फोर्किंग प्रक्रिया की तुलना में अधिक कार्य करते हैं।
असल में, फोर्किंग और थ्रेडिंग में अंतर है। वे अलग-अलग चीजें करते हैं (हालांकि समान प्रतीत होते हैं)। इन अवधारणाओं को समझना मुश्किल हो सकता है, लेकिन यदि आप उन्हें समझने की ईमानदार इच्छा रखते हैं, तो आप उन्हें (व्यापक) शोध के माध्यम से सीख सकते हैं।
EDIT # 1
कृपया इन उदाहरणों को देखें कि कांटे और धागे कैसे बुलाए और उपयोग किए जा सकते हैं। कृपया मुख्य कार्यक्रम पर निष्पादन कार्यों और उनके प्रभावों के व्यवहार पर ध्यान दें।
http://www.jdembrun.com:4352/computerScience/forkVSthread.zip