Я хочу протестировать, используя WaitForMultipleObjects, и для этого я хочу запустить несколько потоков, используя цикл, каждый из которых передает разные ThreadArgs.
(По сути, это просто массив из пяти ThreadArgs и пяти HANDLEs?)
Когда я пытаюсь создать массив либо из структуры, либо из HANDLE, ни то, ни другое не сработает, и я получаю сообщение об ошибке «не могу выделить массив постоянного размера 0» для обоих и «инициализировать»: невозможно преобразовать из « РУЧКА "на" РУЧКА [] "для последнего.
Является ли массив подходящим способом сделать это в отношении структуры? (Кроме того, примечание - оно должно остаться структурой, так как в конечном итоге оно будет содержать шесть членов, сначала я просто пытаюсь заставить его работать в более простой форме, поскольку добавление этих членов должно быть очень простым)
И я бы предположил, что массив Handles - лучший способ сделать это, но как мне объявить один?
Спасибо!
#include <windows.h>
#include <iostream>
#include <process.h>
struct ThreadArgs
{
int id;
};
ThreadArgs args = {1};
unsigned int __stdcall MyThread(void *data)
{
std::cout << "Hello World!\n";
ThreadArgs *args = (ThreadArgs *) data;
std::cout << (*args).id;
return 2;
}
int main()
{
HANDLE hThread = (HANDLE) _beginthreadex(NULL, 0, MyThread, &args, 0, NULL);
WaitForSingleObject(hThread, INFINITE);
while(true);
}
Выше мой код в настоящее время.
Я пытался создать массив HANDLE, используя -
HANDLE hThread[5];
Edit:
Ошибка в этой строке, когда она изменяется на массив HANDLE [5] -
HANDLE hThread[0] = (HANDLE) _beginthreadex(NULL, 0, MyThread, &args, 0, NULL);