दिया गया कार्य C में एक प्रक्रिया के भीतर बनाए जा सकने वाले थ्रेड की अधिकतम संख्या ढूंढना है।
एक थ्रेड एक हल्की प्रक्रिया है और इसे शेड्यूलर द्वारा स्वतंत्र रूप से प्रबंधित किया जा सकता है। चूंकि एक थ्रेड एक प्रक्रिया का घटक है, इसलिए कई थ्रेड एक प्रक्रिया से जुड़े हो सकते हैं और यह कम समय में संदर्भ स्विचिंग लेता है क्योंकि यह प्रक्रिया से हल्का होता है।
थ्रेड्स को प्रक्रियाओं की तुलना में कम संसाधनों की आवश्यकता होती है और वे अपने पीयर थ्रेड्स के साथ मेमोरी साझा करते हैं। सभी उपयोगकर्ता-स्तरीय पीयर थ्रेड्स को ऑपरेटिंग सिस्टम द्वारा एक ही कार्य के रूप में माना जाता है। उनके निर्माण के साथ-साथ समाप्ति के लिए भी कम समय की आवश्यकता होती है।
आउटपुट हर बार प्रोग्राम निष्पादित होने पर अलग होगा।
उपयोग किया गया दृष्टिकोण
void* create(void *) फ़ंक्शन बनाएं और इसे खाली छोड़ दें क्योंकि यह केवल थ्रेड के काम को प्रदर्शित करता है।
main() फ़ंक्शन में max = 0 और ret = 0 दोनों प्रकार के int चर प्रारंभ करें ताकि अधिकतम थ्रेड की संख्या और रिटर्न मान संग्रहीत हो सके।
pthread_t प्रकार का एक चर "th" घोषित करें।
ret == 0 की शर्त के साथ एक व्हाइल लूप चलाएं और ret = pthread_create(&th, NULL, create, NULL) डालें।
लूप के अंदर max++ करें।
लूप के बाहर max प्रिंट करें।
उदाहरण
#include <pthread.h> #include <stdio.h> /* फ़ंक्शन को खाली छोड़ दें क्योंकि यह केवल थ्रेड के काम को प्रदर्शित करता है */ void *create(void *){ } // मुख्य फ़ंक्शन int main(){ int max = 0, ret = 0; pthread_t th; // 0 लौटने तक पुनरावृति करें while (ret == 0){ ret = pthread_create(&th, NULL, create, NULL); max++; } printf(" %d ", max); return 0; } आउटपुट
5741