0
我已創建4個線程,但是當我執行這個程序我得到這個作爲輸出:多線程程序只執行最後創建的線程?
Thread #: 1
Thread #: 2
Thread #: 3
Thread #: 3
Thread #: 4
Thread #: 4
Thread #: 4
Thread #: 5
Thread #: 5
Thread #: 5
.
.
.
Thread #: 5
Thread #: 5
我有2個問題:
- 我只創建了4線程,爲什麼是它顯示線程#:5
- 創建的所有4個線程應該按順序運行,但它爲什麼只運行最後創建的線程?
的源代碼:
#include<windows.h>
HANDLE ThreadHandle[4];
DWORD dwThreadId[4];
DWORD WINAPI ThreadFunction(LPVOID param)
{
while (1)
{
printf("Thread #: %d\n", *((int*)param));
}
Sleep(10);
return 0;
}
int main()
{
static int i = 0;
for (i = 1; i <= 4; i++)
{
ThreadHandle[i] = CreateThread(NULL, 0, ThreadFunction, (LPVOID)&i, 0, &dwThreadId[i]);
Sleep(10);
}
while (1)
{
Sleep(100);
}
return 0;
}
數組在C中爲零索引。寫入'ThreadHandle [4]'是未定義的行爲。 – EOF
而且代碼不能用當前的{}用法進行編譯。併發控制檯輸出是... – deviantfan