2011-09-29 29 views
5

यदि मैं एक pthread के अंदर एक pthread_create बनाता हूं, जो मुख्य फ़ंक्शन द्वारा बनाई गई है, तो मैं एक त्रुटि में भागूंगा। यदि, तो मैं कर सकता हूं कि मुझे क्या चीजों का ख्याल रखना चाहिए ???क्या मैं एक pthread के अंदर एक pthread बना सकते हैं, जो पहले से ही मुख्य द्वारा बनाया गया है?

महत्वपूर्ण ....: मैं एक सॉकेट प्रोग्रामिंग कर रहा हूं, जहां मैंने अलग-अलग बंदरगाहों पर 5 धागे खोले हैं, जो बंदरगाहों पर सुन रहे हैं, जब कभी मुझे एक संदेश मिलता है, तो मैं एक धागा बनाना चाहता हूं जो संदेश लेता है और pwrite का उपयोग कर एक फाइल में लिखता है। तो, मेरे पास कुछ प्रश्न हैं, कृपया आप मेरी मदद कर सकते हैं ???

यदि नहीं तो थ्रेड के अंदर धागा बनाने का दूसरा समाधान क्या है .. ??

या यह मुझे एक सेगमेंटेशन गलती देगा ???

या मैं कुछ दौड़ की स्थिति में चला जाएगा ....

+1

हां, आप यह कर सकते हैं। –

उत्तर

4

pthread_create एक नया धागा बनाता है। स्वतंत्र रूप से यह कहां है कहा जाता है। और पोर्ट पर सुनते समय कनेक्शन के लिए एक नया धागा बनाना बहुत अधिक मानक प्रक्रिया है।

+0

लेकिन, मेरा सवाल यह है कि मैंने रिकॉव थ्रेड से डेटा लिया है और इसे रीव के बाद बनाए गए थ्रेड के लिए एक बहस के रूप में भेजा है .... अब जैसे 5 धागे एक साथ सुन रहे हैं, क्या यह प्राप्त में दौड़ की स्थिति नहीं बनायेगा पैकेट ..... – Invictus

+0

@ इन्विक्टस चाहे आप धागे बनाते हैं, आपको थ्रेड सुरक्षा के लिए सामान्य नियमों का पालन करना होगा। बहुत कुछ इस बात पर निर्भर करता है कि आप 'स्वीकार' का उपयोग करके "सुनवाई" कैसे कर रहे हैं, प्रत्येक लौटा 'int' एक अलग सॉकेट है, जिसे बिना किसी समस्या के बच्चे के धागे में पारित किया जा सकता है। यदि आप यूडीपी कनेक्शन का संचालन कर रहे हैं, और 'recvfrom' का उपयोग करके सुनना चाहते हैं, तो आपको प्रत्येक कॉल के लिए एक नया बफर आवंटित करना चाहिए, और प्राप्त बफर को बच्चे के धागे में पास करना चाहिए, जो इसे तब तक मुक्त कर सकता है जब यह हो। दोनों मामलों में, प्रत्येक थ्रेड को एक अलग सॉकेट (पोर्ट) सुनना चाहिए। –

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