Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

पॉज़िक्स थ्रेड लाइब्रेरी

Pthreads POSIX मानक (IEEE 1003.1c) को संदर्भित करता है जो थ्रेड निर्माण और सिंक्रनाइज़ेशन के लिए API को परिभाषित करता है। यह थ्रेड व्यवहार के लिए विनिर्देश परिभाषित करता है, कार्यान्वयन नहीं। विनिर्देश ओएस डिजाइनरों द्वारा अपनी इच्छानुसार किसी भी तरह से लागू किया जा सकता है। इतने सारे सिस्टम Pthreads विनिर्देशन को लागू करते हैं; अधिकांश यूनिक्स-प्रकार के सिस्टम हैं, जिनमें लिनक्स, मैक ओएस एक्स और सोलारिस शामिल हैं। हालाँकि Windows मूल रूप से Pthreads का समर्थन नहीं करता है, लेकिन Windows के लिए कुछ तृतीय-पक्ष कार्यान्वयन उपलब्ध हैं। चित्र 4.9 में दिखाया गया C प्रोग्राम एक मल्टीथ्रेडेड प्रोग्राम के निर्माण के लिए मूल Pthreads API को प्रदर्शित करता है जो एक अलग थ्रेड में एक गैर-ऋणात्मक पूर्णांक के योग की गणना करता है। अलग थ्रेड एक Pthreads प्रोग्राम में एक निर्दिष्ट फ़ंक्शन में निष्पादन शुरू करते हैं। नीचे दिए गए प्रोग्राम में, यह रनर () फंक्शन है। जिस समय यह प्रोग्राम शुरू होता है, नियंत्रण का एक धागा मुख्य () में शुरू होता है। फिर मुख्य () एक दूसरा धागा बनाता है जो कुछ आरंभीकरण के बाद रनर () फ़ंक्शन में नियंत्रण शुरू करता है। दोनों थ्रेड वैश्विक डेटा योग साझा करते हैं।

उदाहरण

#include<pthread.h>
#include<stdio.h>
int sum;
/* this sum data is shared by the thread(s) */
/* threads call this function */
void *runner(void *param);
int main(int argc, char *argv[]){
   pthread t tid; /* the thread identifier */
   /* set of thread attributes */
   pthread attr t attr;
   if (argc != 2){
      fprintf(stderr,"usage: a.out \n");
      return -1;
   }
   if (atoi(argv[1]) < 0){
      fprintf(stderr,"%d must be >= 0\n",atoi(argv[1]));
      return -1;
   }
   /* get the default attributes */
   pthread attr init(&attr); /* create the thread */
   pthread create(&tid,&attr,runner,argv[1]);
   /* wait for the thread to exit */
   pthread join(tid,NULL);
   printf("sum = %d\n",sum);
}
/* The thread will now begin control in this function */
void *runner(void *param){
   int i, upper = atoi(param);
   sum = 0;
   for (i = 1; i <= upper; i++)
      sum += i;
   pthread exit(0);
}

Pthreads API का उपयोग करते हुए बहु-थ्रेडेड C प्रोग्राम।


  1. सी # प्रोग्राम एक साधारण धागा बनाने के लिए

    एक थ्रेड बनाने के लिए, मैंने एक फंक्शन बनाया है - public void myThread() {    for (int i = 0; i < 3; i++) {       Console.WriteLine("My Thread");    } } उपरोक्त फ़ंक्शन को थ्रेड बनाने के लिए कहा जाता है और एक नया थ्रेडस्टार्ट प्रतिनिधि बनाया जाता है -

  1. सी # प्रोग्राम एक थ्रेड को मारने के लिए

    पहले एक थ्रेड बनाएं और उसे शुरू करें - // new thread Thread thread = new Thread(c.display); thread.Start(); अब थ्रेड प्रदर्शित करें और थ्रेड के कार्य को रोकने के लिए स्टॉप फ़ंक्शन सेट करें - public void display() {    while (!flag) {       Console.WriteLine("It's W

  1. जावा में थ्रेड पूल

    एक थ्रेड पूल प्री-इनिशियलाइज़्ड थ्रेड्स का एक संग्रह है। थ्रेड पूल के पीछे सामान्य योजना यह है कि मेथड स्टार्टअप पर विभिन्न प्रकार के थ्रेड्स बनाएं और उन्हें एक पूल में रखें, जहाँ भी वे बैठते हैं और काम की उम्मीद करते हैं। एक बार जब कोई सर्वर भागीदारी के लिए कॉल प्राप्त करता है, तो यह इस पूल से एक ध