Ich muss zwei Threads erstellen, von denen einer gerade Zahlen zurückgibt und der andere ungerade Zahlen zurückgibt. Was mache ich falsch?Arbeiten mit Threads in 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;
}
Für den Anfang hat das Array 'h' nur 1 Element, aber Sie versuchen, auf 2 von ihnen zu schreiben. – BoBTFish
Sie erstellen 4 Threads aufgrund der Schleife. Entferne die for-Schleife und ändere h zu 'HANDLE h [2]; ', um dein Array groß genug für 2 Griffe zu machen. –
@PeteBecker Tatsächlich tat ich es. Schlechte Angewohnheit, fürchte ich. –