我正在嘗試使用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