View Full Version : [C] Segmentation fault di pthread_join
Salve sto usando la libreria pthread.
Creo N thread e salvo ID dei thread in un vettore tid[N], dopo faccio:
for(i=0; i<= numthr; i++)
rc=pthread_join(tid[i],(void **)&status);
per attendere tutti i thread, inspiegabilmente per certe dimensioni di N mi da segmentation faul la funzione pthread_join. Perche?
maulattu
10-05-2007, 19:22
Salve sto usando la libreria pthread.
Creo N thread e salvo ID dei thread in un vettore tid[N], dopo faccio:
for(i=0; i<= numthr; i++)
rc=pthread_join(tid[i],(void **)&status);
per attendere tutti i thread, inspiegabilmente per certe dimensioni di N mi da segmentation faul la funzione pthread_join. Perche?
la condizione del for presumo debba essere i < numthr e non "<="
partendo da 0 e usando <=, conti numthr+1 e non numthr ;)
Scusa ho sbagliato a copiare, la condizione che ho messo e < .
La cosa strana è se faccio
for(i=1; i<= numthr,i++)
non mi da errore. Pazzesco. L'id del primo thread io l''ho salvato in tid[0].
Qualcuno sa dirmi qualcosa???
maulattu
11-05-2007, 19:07
Scusa ho sbagliato a copiare, la condizione che ho messo e < .
La cosa strana è se faccio
for(i=1; i<= numthr,i++)
non mi da errore. Pazzesco. L'id del primo thread io l''ho salvato in tid[0].
Qualcuno sa dirmi qualcosa???
status di che tipo è?
guarda qui: http://publib.boulder.ibm.com/iseries/v5r1/ic2924/info/apis/users_25.htm
si dichiara
void *status
e poi lo si passa alla pthread_join come
pthread_join(..., &status);
if (status != NULL)
{
...
}
Ho messo status di tipo void, ho messo NULL al posto di status, ma il problema persiste è una cosa stranissima
maulattu
13-05-2007, 08:48
Ho messo status di tipo void, ho messo NULL al posto di status, ma il problema persiste è una cosa stranissima
mmmhhh....:help:
a questo punto posta la parte di codice con cui crei i thread
maulattu
13-05-2007, 08:49
mi da segmentation faul la funzione pthread_join. Perche?
ora che mi viene in mente... ma lo hai verificato con gdb?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.