के साथ संगत हैं, यूनिक्स वातावरण में makecontext()/swapcontext()
फ़ंक्शन का परिवार कभी-कभी सी में कोरआउट को कार्यान्वित करने के लिए उपयोग किया जाता है। हालांकि ये फ़ंक्शन सीधे ढेर और निष्पादन प्रवाह में हेरफेर करते हैं। अक्सर जब सी से सी ++ में स्विच करते समय ये निम्न स्तर की कार्यक्षमता काफी अलग होती है।क्या मेकॉनटेक्स्ट()/swapcontext() फ़ंक्शन C++
तो सवाल यह है कि अगर makecontext()
और swapcontext()
का उपयोग करके कोरआउट को कार्यान्वित करने में कोई समस्या होगी। निस्संदेह एक को बहुत अच्छी देखभाल करना होगा, कि एक अपवाद कभी भी इस तरह के कोरआउटिन से बच नहीं सकता है, क्योंकि इस के लिए ढेर पर कोई अपवाद हैंडलर नहीं होगा और कार्यक्रम सबसे अधिक संभावना सेगफॉल्ट होगा। लेकिन इसके अलावा सी ++ आंतरिक रूप से चीजों को संभालता है और makecontext()
और setcontext()
निष्पादन पथ को संशोधित करने के तरीके के बीच कोई असंगतता है?
मैंने इन कार्यों के बारे में कभी नहीं सुना होगा। क्या आप जानते हैं कि [POSIX 2001] (http://pubs.opengroup.org/onlinepubs/009695399/functions/makecontext.html) पहले ही उन्हें धागे के पक्ष में अश्लील दिखाते हैं? –
@ लार्समैन: एक करुणा। चीजें जो कोरआउट के साथ आसान हैं धागे के साथ बहुत कठिन हैं। हां, आप * थ्रेड के साथ कोरआउट को अनुकरण कर सकते हैं, लेकिन केवल ओवरहेड (सिंक्रनाइज़ेशन!) के साथ, और जब किसी अन्य समय अवरुद्ध होकर किसी भी समय थ्रेड चल रहा हो, तो वास्तव में यह नहीं है कि थ्रेडिंग का क्या अर्थ है। – celtschk