我需要創建兩個線程,其中一個將返回偶數,另一個將返回奇數。我究竟做錯了什麼?使用C++中的線程
int _tmain(int argc, _TCHAR* argv[])
{
DWORD ID1 = 1, ID2 = 100;
DWORD arr[] = {ID1, ID2};
HANDLE h[1];
for (int i = 0; i < 2; ++i)
{
h[0] = CreateThread(NULL, 0, &f1, arr, 0, &arr[0]);
if (h[0] == NULL)
_tprintf(_T("%d"), GetLastError());
h[1] = CreateThread(NULL, 0, &f2, arr, 0, &arr[1]);
if (h[1] == NULL)
_tprintf(_T("%d"), GetLastError());
}
WaitForMultipleObjects(2, h, TRUE, INFINITE);
for (int i = 0; i < 2; ++i)
CloseHandle(h[i]);
return 0;
}
對於初學者來說,數組'h'只有1個元素,但是你試圖寫入2個元素。 – BoBTFish
由於循環,您正在創建4個線程。刪除for循環並將h更改爲'HANDLE h [2];'使您的數組足夠大,以便處理2個句柄。 –
@PeteBecker的確我做到了。我害怕的壞習慣。 –