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