2011-12-09 7 views
5

मुझे पता है कि मैं सी में धागे कर सकते हैं न, मैं pthread.h पुस्तकालय के बारे में एक समीक्षा देखा था, लेकिन उसके बाद मैंने सुना है कि अपने ही लिनक्स ओएस के लिए, मैं एक समारोह है कि इसकी एक टाइमर, मैं उस के साथ एक धागा बनाया करना चाहते हैं फ़ंक्शन, लेकिन मुझे या तो लाइब्रेरी नहीं है जिसे मुझे उपयोग करने की आवश्यकता है और कोड लिखने के लिए सिंटैक्स है, अगर कोई मुझे धागे के साथ एक साधारण कोड प्रदान कर सकता है, या मुझे बताएं कि मुझे क्या चीजें डालने की आवश्यकता है और कार्यों का पैरामीटर।मैं विंडोज़ के लिए सी में मल्टीथ्रेड कैसे बना सकता हूं?

यहां यह फ़ंक्शन मैं उस उपयोगकर्ता को लागू करने के विशिष्ट समय को उलटी गिनती करता हूं: मुझे उस फ़ंक्शन के साथ थ्रेड बनाना होगा।

फंक्शन (उलटी गिनती):

#include <stdio.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <time.h> 

void countdown(int second) 
{ 
    int secs = 1; 
    time_t unix; 
    struct tm * timeinfo; 
    time(&unix); 
    timeinfo = localtime(&unix); 
    int t1 = timeinfo->tm_sec; 
    int t2 = timeinfo->tm_sec; 
    int i = 0; 

    while(1 == 1) 
    { 
     time(&unix); 
     timeinfo = localtime(&unix); 
     if((t1 + i) == timeinfo->tm_sec) 
     { 
       system("cls"); 
       printf("Time left %d\n", timeinfo->tm_sec - t2 - second); 
       i++; 
     } 
     if(timeinfo->tm_sec >= (t1 + second)) 
     { 
      system("cls"); 
      puts("Your time its done"); 
      break; 
     } 

    } 
} 

int main() 
{ 
    int limit; 
    printf("How much time would you like (In secs): "); 
    scanf("%d", &limit); 
    countdown(limit); 

    system("PAUSE"); 
    return 0; 
} 
+0

हाय। आप win32 api – danca

उत्तर

3

यहाँ धागे
http://www.cs.rpi.edu/academics/courses/netprog/WindowsThreads.html

कहा जा रहा है, सी एक minimalistic भाषा है WINAPI के लिए एक सरल गाइड है, करता है निर्मित जावा की तरह सूत्रण नहीं (न ही विशाल अतिरिक्त पुस्तकालय)। यह इसके ऊपर बनाने के लिए एक सामान्य भाषा के रूप में था। यूनिक्स-जैसी प्रणालियों पर एएनएसआई/आईएसओ मानक से परे सिस्टम चौड़े मानक सी पुस्तकालय हैं, जो पॉज़िक्स मानक का हिस्सा हैं, pthreads posix-threads हैं। विंडोज सी पुस्तकालय एमएस चीजों को अपना रास्ता बनाते हैं। आप ढांचे का उपयोग कर सकते हैं जो ग्लिब या क्यूटी (विंडोज, लिनक्स, अन्य * निक्स) जैसे बहु-ओएस समर्थन प्रदान करते हैं। खिड़कियों के अंदर पॉजिक्स सुविधाओं का उपयोग करने के लिए बंदरगाह और संगतता परत भी हैं। सिगविन आपको लाइब्रेरी के अलावा एक पूर्ण पॉज़िक्स वातावरण देता है, मिनजीडब्ल्यू कंपाइलर आपको Win32 परतों के शीर्ष पर पॉज़िक्स फ़ंक्शंस के बंदरगाहों का उपयोग करने की अनुमति देता है।

फ़्रेमवर्क चिकना और क्यूटी की तरह सबसे अच्छा आपके कोड बहु मंच रखने के लिए कर रहे हैं, वे ओएस बारीकियों छुपाने के लिए, एक अधिक सामान्य दृष्टिकोण की इजाजत दी।

फिसलनदार जीयूआई विकास के लिए जीटीके पुस्तकालयों का हिस्सा है और क्यूटी भी एक जीयूआई विकास रूपरेखा लेकिन C++ है।

3

टैग सुझाव देते हैं कि आप विंडोज का उपयोग कर रहे हैं। Win32 api में CreateThread फ़ंक्शन है जिसका उपयोग एक नया थ्रेड लॉन्च करने के लिए किया जा सकता है। हालांकि, यदि आप सी रनटाइम (जो आप हैं) का उपयोग कर रहे हैं तो आपको सहित _beginthread फ़ंक्शन का उपयोग करना चाहिए।

कारण _beginthread उपयोग करने के लिए है कि यह विशिष्ट राज्य सूचना थ्रेड कि सी क्रम एक धागा भीतर सही ढंग से निष्पादित करने के लिए की आवश्यकता है initializes है।

+0

से CreateThread का उपयोग कर सकते हैं बहुत बहुत धन्यवाद: डी –

3

यदि आप pthreads से परिचित हैं और/या क्रॉस-प्लेटफ़ॉर्म कोडबेस चाहते हैं, तो आप MinGW और pthreads-win32 का उपयोग कर सकते हैं। मैंने हाल ही में इसे अपने आवेदन में इस्तेमाल किया है और ऐसा लगता है कि यह बहुत अच्छा काम करता है। यदि आप विंडोज के लिए विशेष रूप से विकास कर रहे हैं, तो संभवतः WinAPI थ्रेडिंग सामान को रेडकोट के रूप में जानने के लिए आपका समय लायक है।

2

सी मानक पुस्तकालय धागा अवधारणा नहीं है। एक धागा आमतौर पर ओएस में एक अवधारणा है। आप linux में pthread का उपयोग करने के लिए Win32api का उपयोग कर सकते हैं जैसे कि आप linux में pthread का उपयोग नहीं करते हैं (वास्तव में इतना बराबर नहीं ..)

win32api के बारे में और जानने के लिए, कृपया एमएसडीएन पर जाएं।

win32api साथ धागा बनाने के लिए कैसे:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682516(v=vs.85).aspx

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