2009-12-30 14 views
14

मुझे विंडोज़ Vista पर सी में थ्रेड का उपयोग करने की क्या ज़रूरत है और मैं कैसे उपयोग कर सकता हूं?विंडोज पर सी में धागे का उपयोग करना। सरल उदाहरण?

क्या आप कृपया मुझे एक साधारण कोड उदाहरण दे सकते हैं?

+1

हालांकि यह एक साधारण आरटीएफएम प्रश्न हो सकता है, यह वास्तविक सवाल नहीं है। आखिरकार, पहले से ही कई वास्तविक उत्तर हैं। –

उत्तर

27

विंडोज पर CreateThread() का उपयोग करने के तरीके पर MSDN sample है।

मूल विचार यह है कि आप CreateThread() को कॉल करते हैं और इसे अपने थ्रेड फ़ंक्शन पर पॉइंटर पास करते हैं, जो इसे बनाए जाने के बाद लक्ष्य थ्रेड पर चलाया जाएगा।

यह करने के लिए सबसे सरल कोड है:

#include <windows.h> 

DWORD WINAPI ThreadFunc(void* data) { 
    // Do stuff. This will be the first function called on the new thread. 
    // When this function returns, the thread goes away. See MSDN for more details. 
    return 0; 
} 

int main() { 
    HANDLE thread = CreateThread(NULL, 0, ThreadFunc, NULL, 0, NULL); 
    if (thread) { 
    // Optionally do stuff, such as wait on the thread. 
    } 
} 

तुम भी SHCreateThread() -same मूल विचार बुला का विकल्प होता है, लेकिन आप के लिए कुछ खोल प्रकार प्रारंभ करना होगा यदि आप इसे इस तरह के आरंभ कॉम के रूप में पूछते हैं, , आदि

+3

ध्यान रखें, हालांकि, यदि आप नए धागे में सीआरटी का उपयोग करने जा रहे हैं तो आपको बेहद सावधान रहना पड़ सकता है। एमएसवीसी में, उदाहरण के लिए, आपको सीआरटी को अपने आंतरिक प्रति-थ्रेड संरचनाओं को सही ढंग से आवंटित/डिलीकेट करने के लिए, _बीजिनथ्रेड/_beginthreadex और सापेक्ष एपीआई के बजाय _endthread का उपयोग करना चाहिए। मुझे लगता है कि अन्य सीआरटी में भी इसे किसी तरह से जाना चाहिए। –

+0

इसके अतिरिक्त आप SHCreateThread() का उपयोग कर सकते हैं यदि आप चाहते हैं कि यह आपके लिए नए थ्रेड पर अन्य चीजों के साथ COM प्रारंभ करना चाहता है। –

+0

यह एक सी ++ उदाहरण (लिंक) प्रतीत होता है। क्या यह सी के लिए भी काम करेगा? – Jiminion

3

आप CreateThread फ़ंक्शन का उपयोग करेंगे।

आपने सेमफोरों का भी उल्लेख किया है। इसके लिए आप CreateSemaphore का उपयोग करेंगे।

1

परमाणु संचालन और म्यूटेक्स अच्छे हैं। मैं CreateThread आदि का उपयोग करता हूं, pthreads नहीं।

+0

क्या पर्थ्रेड लाभ उठाते हैं। विंडोज और/या विजुअल स्टूडियो पर? – Jiminion

+0

कोई पर्थ्रेड सीधे लाभ नहीं उठा रहे हैं। विंडोज और/या विजुअल स्टूडियो पर। हालांकि आप मिंगव और साइगविन का उपयोग करने में सक्षम हो सकते हैं। –

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