#include <stdio.h>
#include <process.h>
#include <wtypes.h>
typedef unsigned int (__stdcall * THREAD_FUN_TYPE)(void *);
int ThreadIp(void* param)
{
while(true)
{
printf("I'm runing!\n");
}
return 0;
}
int main()
{
int iThreadNum=100;
HANDLE* phThreads = new HANDLE[iThreadNum];
for (int i=0;i<iThreadNum;++i)
{
phThreads[i]=(HANDLE*)_beginthreadex(NULL, 0, (THREAD_FUN_TYPE)ThreadIp,NULL, NULL, NULL);
}
int nIndex = ::WaitForMultipleObjects(iThreadNum,phThreads,1,INFINITE);
printf("End!\n");
return 0;
}
Я хочу, чтобы программа остановится на WaitForMultipleObjects, пока все нити не конца (Не, пока все нити не будут созданы успешно) .Но программа не остановится на WaitForMultipleObjects, в то время как все потоки Все еще работает. Поэтому я стараюсь использовать SetEvent, но все та же проблема:C++ Ждите все нити, чтобы закончить
int iThreadNum=100;
HANDLE* phThreads = new HANDLE[iThreadNum];
for (int i=0;i<iThreadNum;++i)
{
phThreads[i]=CreateEvent(NULL, FALSE, FALSE,NULL);
ResetEvent(phThreads[i]);
}
int nIndex = ::WaitForMultipleObjects(iThreadNum,phThreads,1,INFINITE);
100 потоков много потоков. Сколько ядер имеет ваша машина? – doctorlove
У этого есть 8 сердечников. Извините, что я только что видел ваш ответ. – Gank
Он не будет запускать все ваши потоки сразу :-) – doctorlove