c++ - behaviour of pthreads and pthread_join function -


i new multi-threaded programming , have question pthreads.

this test code run , don't understand behaviour. can throw light on please.

void *t1(void *args){       printf("returning t1\n");       return;   }    void *t2(void *args){       printf("returning t2\n");       return;   }    int main(){       pthread_t thread1,thread2;           int r1,r2;       r1=pthread_create(&thread1,null,t1,null);       r2=pthread_create(&thread2,null,t2,null);        pthread_join(thread1,null);      // pthread_join(thread2,null);         return 0;   }   

the behaviour of program either of 5 shown below

murtuza@murtuza:fftw$ ./ptest   returning t2   returning t1   murtuza@murtuza:fftw$ ./ptest   returning t1   returning t2   murtuza@murtuza:fftw$ ./ptest   returning t1   murtuza@murtuza:fftw$ ./ptest   returning t2   returning t2   murtuza@murtuza:fftw$ ./ptest   returning t1   returning t2   returning t2   

i don't understand 4th , 5th output. why thread t2 executing twice? of course, if uncomment pthread_join(&thread2,null,t2,null) program behave correctly interested in case 1 thread joins main() thread.

thanks, mir

i'm afraid wasn't able replicate problem.

i ran:

#include <pthread.h> #include <stdio.h>  void *t1(void *args){       printf("returning t1\n");       return null;   }    void *t2(void *args){       printf("returning t2\n");       return null;   }    int main(){       pthread_t thread1,thread2;           int r1,r2;       r1=pthread_create(&thread1,null,t1,null);       r2=pthread_create(&thread2,null,t2,null);        pthread_join(thread1,null);      // pthread_join(thread2,null);         return 0;   }   

as:

while (true) ; ./ptest ; date ; done 

and spotted: t1,t2 ; t2,t1 , t1.

but never repeated entries, or missing t1.

sorry.

maybe there's broken in threading library, or in printing out threaded process?


Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -