Sef*_*efu 7 c++ windows winapi multithreading return-value
我只是想知道是否有可能(如果是这样,如何)在C++(Windows)中获取线程的返回值.我有几个线程,我使用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?
}
...
}
Run Code Online (Sandbox Code Playgroud)
我试图使用,GetExitCodeThread(thread)但我假设这返回一个系统退出代码,因为它总是给我一个非常奇怪的整数.有没有人知道方法或解决方法?
Don*_*eba 11
GetExitCodeThread是正确的函数.以下是MSDN对其功能的描述:
此函数立即返回.如果指定的线程尚未终止且函数成功,则返回的状态为STILL_ACTIVE.如果线程已终止且函数成功,则返回的状态为以下值之一:
- ExitThread或TerminateThread函数中指定的退出值.
- 线程函数的返回值.
- 线程进程的退出值.
| 归档时间: |
|
| 查看次数: |
13656 次 |
| 最近记录: |