我就是想使用_beginthreadex来创建线程,可是告诉我不行:
{
HANDLE hThread[3] = {0};
DWORD dwThreadID = 0; hThread[0] = _beginthreadex( NULL, 0, myThread01, NULL, 0, &dwThreadID );
}DWORD WINAPI myThread01(PVOID pPara )
{
return 0;
}编译时提示说:
error C2664: “_beginthreadex”: 不能将参数 3 从“DWORD (__stdcall *)(PVOID)”转换为“unsigned int (__stdcall *)(void *)”
用CreateThread可以,这是为什么?
{
HANDLE hThread[3] = {0};
DWORD dwThreadID = 0; hThread[0] = _beginthreadex( NULL, 0, myThread01, NULL, 0, &dwThreadID );
}DWORD WINAPI myThread01(PVOID pPara )
{
return 0;
}编译时提示说:
error C2664: “_beginthreadex”: 不能将参数 3 从“DWORD (__stdcall *)(PVOID)”转换为“unsigned int (__stdcall *)(void *)”
用CreateThread可以,这是为什么?
请问:event和CreateEvent有联系么?
MFC开发中的代码。
改成UINT WINAPI myThread01(PVOID pPara )嘛
typedef unsigned int UINT;
typedef void *LPVOID;
_stdcall重定义成WINAPI
void* 重视义成LPVOID
unsigned long重定义成DWORD
unsigned int 重定义成UINT
所以说C++ run time Library中创建线程的方法:
unsigned int (__stdcall *)(void *)”
到了windows平台就是:
DWORD (WINAPI*)(LPVOID) //这里的WINAPI限定符不必显式写出.CreateEvent用于创建事件event,它返回一个事件句柄,这个函数可以决定事件是手动方式还自动方式,最初状态是有信号的还是无信号,另外还可以为事件命名,方便事件跨进程.
不能是类的普通成员函数,只能是类的静态成员函数或全局函数