主函数怎么获得返回子函数的值?(子函数有线程,返回值是从线程里获得)
主函数如何获得返回子函数的值?(子函数有线程,返回值是从线程里获得)
主函数MainFun,调用子函数ChildFun,
ChildFun函数里有一个线程,结构如下:
线程函数 DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
char *str=char (lpParameter) ;
........
}
void ChildFun(char *str)
{
.....
::CreateThread ( NULL, 0, ThreadProc, LPVOID(str), 0, &dwThreadID );//调用线程函数,并在线程中最终取得str的值
}
主函数调用
void MainFun(char *str)
{
ChildFun(str);//获得得str后才往下执行,就这一步不知如何处理,因为子函数内有线程,所以调用ChildFun后程序直接往下走了
。。。。。
......
}
------解决方案--------------------
线程同步
------解决方案--------------------
在void ChildFun(char *str) 的::CreateThread 后添加WaitForSingleObject(...)等待子线程结束
------解决方案--------------------
这种情况还不如把线程做成函数,反正都要等待它结束才往下执行
------解决方案--------------------
GetExitCode(HANDLE)
主函数MainFun,调用子函数ChildFun,
ChildFun函数里有一个线程,结构如下:
线程函数 DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
char *str=char (lpParameter) ;
........
}
void ChildFun(char *str)
{
.....
::CreateThread ( NULL, 0, ThreadProc, LPVOID(str), 0, &dwThreadID );//调用线程函数,并在线程中最终取得str的值
}
主函数调用
void MainFun(char *str)
{
ChildFun(str);//获得得str后才往下执行,就这一步不知如何处理,因为子函数内有线程,所以调用ChildFun后程序直接往下走了
。。。。。
......
}
------解决方案--------------------
线程同步
------解决方案--------------------
在void ChildFun(char *str) 的::CreateThread 后添加WaitForSingleObject(...)等待子线程结束
------解决方案--------------------
这种情况还不如把线程做成函数,反正都要等待它结束才往下执行
------解决方案--------------------
GetExitCode(HANDLE)