дамп ядра в многопоточной программе - PullRequest
0 голосов
/ 10 ноября 2009

я пытался написать простую многопоточную программу. Это сбрасывает ядро. У меня есть моя функция, которая вызывается при создании потока ниже:

void *BusyWork(void *t)
{
   int i;
   int *tid;
   int result=0;
   tid = t;

   printf("Thread %d starting...\n",*tid);
   for (i=0; i<10; i++)
   {
       result = result + (i* i);
   }
   printf("thread %d is sleeping for %d sec's\n",tid,tid);
   sleep(tid);
   printf("Thread %d done. Result = %e\n",tid, result);
   pthread_exit((void*) t);
}

Мой вызов функции pthread_create находится внутри основной функции:

int t;

for(t=0; t<NUM_THREADS; t++) 
{
      printf("Main: creating thread %d\n", t);
      rc = pthread_create(&thread[t], &attr, BusyWork, (void *)t);
}

Пожалуйста, помогите мне найти проблему? Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 10 ноября 2009

Начиная с этой строки:

printf("thread %d is sleeping...

Все ссылки на tid должны быть *tid.

0 голосов
/ 10 ноября 2009

Эта строка неверна:

printf("Thread %d starting...\n",*tid);

Вы можете достичь того, чего хотите:

printf("Thread %d starting...\n",(int) t);

или printf ("Тема% d начальная ... \ n", tid);

...