से थ्रेडेड फ़ंक्शन में एकाधिक तर्क पास करना यह सी में थ्रेडिंग का मेरा पहला प्रयास है। मैं एक गोलाकार रूप से बाध्य बफर बना रहा हूं। मैं कैसे धागा बनाने के लिए पता है, लेकिन सभी उदाहरण मैं केवल पिरोया है कार्यों कि एक शून्य पैरामीटर को स्वीकार देखा है, लेकिन दुर्भाग्य से मेरे कार्यकर्ता विनिर्देश मुझे तीन उपयोग करने के लिए की आवश्यकता है, जैसा कि यहाँ दिखाया:pthread_create
void bufferRead(BoundedBuffer* buffer, char* data, int count) {
pthread_mutex_lock(&buffer->mutexBuffer);
<snip>
pthread_mutex_unlock(&buffer->mutexBuffer);
}
यहाँ मेरी pthread_create है बयान
pthread_create(&buffer.readThread, NULL, (void *)bufferRead, &readParams)
और मेरे readParams struct/
struct readThreadParams {
BoundedBuffer b;
char* data;
int count;
};
struct readThreadParams readParams;
readParams.b = buffer2;
readParams.data = out_array;
readParams.count = in_size;
कार्य कैसे struct के मापदंडों के प्रत्येक आवंटित करने के लिए पर कोई सलाह ख को पास करने के बाद ufferRead समारोह की सराहना की जाएगी।
-1 एक स्थानीय चर को दूसरे थ्रेड में –
पास करना यदि यह मुख्य में स्थानीय चर है जो कोई समस्या नहीं है। यदि आप मुख्य से बाहर निकलते हैं तो आपका प्रोग्राम वैसे भी समाप्त हो जाता है, इसलिए आपका प्रोग्राम चल रहा है, जबकि वेरिएबल हमेशा मौजूद है। – jcoder
@jcoder 'मुख्य' छोड़ने का मतलब तत्काल प्रोग्राम समाप्ति का नहीं है। और इंटर-थ्रेड संचार के लिए स्वत: (गैर-ढेर, गैर स्थैतिक) चरणीय एक संदिग्ध विचार है। –