主函数怎么获得返回子函数的值?(子函数有线程,返回值是从线程里获得)

主函数如何获得返回子函数的值?(子函数有线程,返回值是从线程里获得)
主函数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)