Я использую MINGW на моей машине Windows 7 для кодирования потоков POSIX.Первые 2 потока не выполняются, если я создаю потоки в цикле
Рассмотрим следующий простой код:
#include <stdio.h>
#include <pthread.h>
#include <process.h>
#define NUM_THREADS 5
void *PrintHello(void *threadid)
{
long tid;
tid = (long)threadid;
printf("Hello Dude...!!!\t I am thread no #%ld\n",tid);
pthread_exit(NULL);
}
int main()
{
pthread_t thread[NUM_THREADS];
int rc;
long t;
for(t=0;t<NUM_THREADS;t++)
{
printf("Inside the Main Thread...\nSpawning Threads...\n");
rc=pthread_create(&thread[t],NULL,PrintHello,(void*)t);
if(rc)
{
printf("ERROR: Thread Spawning returned code %d\n",rc);
exit(-1);
}
}
return 0;
}
Над программой при выполнении в моей системе он показывает следующий вывод:
Inside the Main Thread...
Spawning Threads...
Inside the Main Thread...
Spawning Threads...
Hello Dude...!!! I am thread no #0
Inside the Main Thread...
Spawning Threads...
Hello Dude...!!! I am thread no #1
Inside the Main Thread...
Spawning Threads...
Hello Dude...!!! I am thread no #2
Inside the Main Thread...
Spawning Threads...
Эта программа должна была нереститься 5 нитей. Но он создал только 2 потока. Первые 2 и последние 2 строки предполагают, что подпрограмма pthread_create() будет вызвана. А поскольку переменная «rc» не является «1», поэтому нет никакой ERROR в создании потоков, иначе она попала бы в «if (rc)».
Итак, где ошибка? Или это связано с моей машиной для окон.
я изменил долго Int, но по-прежнему первый поток не получает казнен ... – Shantanu
Спасибо, что работало ... – Shantanu