Я создал 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