जब मैं को main
से कॉल करता हूं, तो प्रोग्राम कभी समाप्त नहीं होता है। मुझे कार्यक्रम खत्म होने की उम्मीद थी, क्योंकि मैं प्रोग्राम के एकमात्र धागे से बाहर निकल रहा था, लेकिन यह काम नहीं करता है। ऐसा लगता है लटका हुआ है।क्या मुख्य से pthread_exit को कॉल करना ठीक है?
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
int main(int argc, char *argv[])
{
printf("-one-\n");
pthread_exit(NULL);
printf("-two-\n");
}
प्रोसेस एक्सप्लोरर पता चलता है कि (केवल) धागा Wait:DelayExecution
स्थिति में है।
pthread_exit
प्रलेखन के अनुसार:
प्रक्रिया एक निकास पिछले धागा के बाद 0 की स्थिति के साथ बाहर निकलने जाएगा समाप्त कर दिया गया। व्यवहार होगा जैसे कार्यान्वयन निकास() को थ्रेड समाप्ति समय पर शून्य तर्क के साथ कहा जाता है।
मैं देव-सी ++ v4.9.9.2 और pthreads-Win32 v2.8.0.0 (libpthreadGC2.a
रूप से लिंक हो) का उपयोग कर रहा हूँ।
लाइब्रेरी ठीक प्रतीत होती है (उदाहरण के लिए, pthread_self
या pthread_create
main
से ठीक काम करता है)।
क्या main
से pthread_exit
पर कॉल करने के लिए मुझे कोई कारण नहीं है?
'pthread_exit (NULL) के बजाय आप' 0 वापस क्यों नहीं लौटते; '? –
मुझे पता है कि मैं _could_ 'वापसी' या 'बाहर निकलें'। मैं सिर्फ यह जानना चाहता हूं कि 'pthread_exit' को कॉल करके मुख्य धागे को समाप्त करना कानूनी है या नहीं। – user429788
मुख्य() से लौटना pthread_exit() चलाने के लिए बहुत अलग है। उत्तरार्द्ध शेष जीवित धागे को खत्म करने देगा और फिर वापसी मूल्य 0. से बाहर निकल जाएगा। पूर्व तुरंत सबकुछ समाप्त कर देगा। –