C++多线程 CreateThread传参有关问题
C++多线程CreateThread传参问题void start(DWORD param){HANDLE thread CreateThread(NULL,0,param,NULL
C++多线程 CreateThread传参问题
void start(DWORD param)
{
HANDLE thread = CreateThread(NULL,0,param,NULL,0,NULL);
}
DWORD WINAPI threadFuc1(LPVOID ipParameter)
{
........
}
DWORD WINAPI threadFuc2(LPVOID ipParameter)
{
........
}
//如上,CreateThread 在函数中时,如何把函数名传过去,填写CreateThread的第三个参数(即线程函数)
[解决办法]
typedef DWORD (WINAPI* THREAD_FUNC_NAME )(LPVOID);
DWORD WINAPI thread1(LPVOID lpParam)
{
std::cout << "thread 1 run" << std::endl;
return 1;
}
DWORD WINAPI thread2(LPVOID lpParam)
{
std::cout << "thread 2 run" << std::endl;
return 1;
}
void start(THREAD_FUNC_NAME threadFun)
{
HANDLE handle_thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threadFun, NULL, 0, NULL);
}
void CFindFileDlg::OnBnClickedBtnFindfile()
{
start(thread1);
start(thread2);
}
这样用吧,我个人觉得用DWORD接收参数不好,应该明确接收某种类型的。
[解决办法]强转吧!,不然就象9楼这样就最好了!
如还想传线程参数,定义个结构传指针,修改start的实现即可: