我正在尝试使用for循环创建3个线程。以下是我的代码片段:无法使用for循环创建多个线程
DWORD WINAPI ThreadProc0(LPVOID param)
{
return 0;
}
DWORD WINAPI ThreadProc1(LPVOID param)
{
return 0;
}
DWORD WINAPI ThreadProc2(LPVOID param)
{
return 0;
}
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
DWORD threadId = 0;
int max_number=1;
//Start the threads
typedef DWORD (WINAPI * THREADPROCFN)(LPVOID lpParameter);
THREADPROCFN function[3] = {ThreadProc0,ThreadProc1,ThreadProc2} ;
for (int i = 0; i < max_number; i++)
{
CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)&function[i],
(LPVOID) i,
0,
NULL
);
}
}
代码编译成功,但执行时,错误是solution.exe已停止工作。 当我调试的代码,我得到以下错误:
未处理的异常在0x0034fd00在Solution.exe:0000005:访问冲突。
等待帮助。
如果将[(LPTHREAD_START_ROUTINE)&function [i],''改为'(LPTHREAD_START_ROUTINE)函数[i]),会发生什么情况?(即不要取指向函数的指针地址,将指针指向函数) – 2013-05-07 07:48:23
请注意,您的问题与创建多个线程无关,因为'max_number'设置为1 - 您只是试图创建一个线程。 – 2013-05-07 08:07:36
+1指出问题:) – Ayse 2013-05-07 08:14:29