我正在尝试使用winapi的CreateThread()函数创建一个线程,但它不起作用。完全没有错误
void Inc::init() {
DWORD id;
HANDLE hnd = CreateThread(NULL,0,asd,this,0,&id);
}
DWORD Inc::asd(LPVOID lparam) {
Inc* g = (Inc*)lparam;
printf("asd");
}
asd()根本没有执行
答案 0 :(得分:3)
您没有发布我们可以帮助您调试的任何最小编译代码,因此,我要说的所有内容都是基于我在此主题上看到的其他问题的猜测:
asd
被声明为static
,CreateThread
是一个C函数,对类方法一无所知asd
被声明为__stdcall
,错误的调用约定可能会导致奇怪和意外的结果。this
。 WaitForSingleObject
确保线程工作完成。asd
不会返回任何DWORD
值。确保返回一些返回代码。一般说明:
static_cast
std::thread
。考虑使用它。GetLastError
检查上一个错误的值。