मैं बस सोच रहा था कि यह संभव है (और यदि ऐसा है, तो कैसे) C++ (विंडोज) में थ्रेड के वापसी मूल्य प्राप्त करने के लिए। मेरे पास कई धागे हैं, और मैं उन पर WaitForMultipleObjects(...)
का उपयोग करता हूं। यह तब तक इंतजार करता है जब तक धागा नहीं किया जाता है, और कहा थ्रेड की अनुक्रमणिका देता है, और सब ठीक है। हालांकि, मैं अपने हैंडल का उपयोग करके समाप्त धागे के वापसी मूल्य को प्राप्त करने में सक्षम होना चाहता हूं।आप विंडोज थ्रेड का रिटर्न वैल्यू कैसे प्राप्त कर सकते हैं?
उदाहरण के लिए:
DWORD WINAPI Thread1(void *parameter){
...
if(...) return 0;
else return -1;
}
DWORD WINAPI Thread2(void *parameter){
...
if(...) return 1;
else return 0;
}
int main(){
HANDLE t1 = CreateThread(0, 0, Thread1, NULL, 0, 0);
HANDLE t2 = CreateThread(0, 0, Thread2, NULL, 0, 0);
HANDLE *threads = new HANDLE[2];
threads[0] = t1;
threads[1] = t2;
int result = WaitForMultipleObjects(2, threads, false, INFINITE);
if(result == 0){
//get the threads value here:
int retVal = SomeFunction(t1); //What is SomeFunction?
}
...
}
मैं GetExitCodeThread(thread)
उपयोग करने के लिए कोशिश की है, लेकिन मैं के रूप में यह हमेशा मुझे एक बहुत ही अजीब पूर्णांक देता है यह एक ऐसी प्रणाली से बाहर निकलें कोड लौटाता है, यह सोचते हैं रहा हूँ। क्या किसी को रास्ता, या कामकाज पता है?
मैंने हमेशा GetExitCodeThread का उपयोग किया है। क्या आप वाकई इसका सही इस्तेमाल कर रहे हैं? यह एक थ्रेड हैंडल और एक पॉइंटर को DWORD पर ले जाता है और GetExitCodeThread (_not_ थ्रेड का वापसी मान) की सफलता देता है। –
आपका प्रश्न मेरा उत्तर है :) – Koying