为什么在多线程调用的函数中 HRESULT hres = CoInitializeEx(0, COINIT_MULTITHREADED); 失败?解决办法
为什么在多线程调用的函数中 HRESULT hres = CoInitializeEx(0, COINIT_MULTITHREADED); 失败?
创建10个线程,为什么第一个是正常的,不会打印现“失败”,以后的线程全部打印“失败”?
for(int i=0;i <10;i++){
threads[i] = CreateThread(NULL,0,FunProc,NULL,0,NULL);
Sleep(100);
}
DWROD WINAPI FunProc(LPVOID lpPara){
HRESULT hres = CoInitializeEx(0, COINIT_MULTITHREADED);
if (FAILED(hres))
{
cout < < "失败 "
< < hex < < hres < < endl;
ClearThreadAndIp(ip);
return 1;
}
}
谢谢!
------解决方案--------------------
我猜想是每个进程中初始化一次即可
创建10个线程,为什么第一个是正常的,不会打印现“失败”,以后的线程全部打印“失败”?
for(int i=0;i <10;i++){
threads[i] = CreateThread(NULL,0,FunProc,NULL,0,NULL);
Sleep(100);
}
DWROD WINAPI FunProc(LPVOID lpPara){
HRESULT hres = CoInitializeEx(0, COINIT_MULTITHREADED);
if (FAILED(hres))
{
cout < < "失败 "
< < hex < < hres < < endl;
ClearThreadAndIp(ip);
return 1;
}
}
谢谢!
------解决方案--------------------
我猜想是每个进程中初始化一次即可