[ karas @ 27.01.2006. 23:58 ] @
Ako pokrenem 2 detached thread-a koja broje do 10 i ispisuju poruku na STDOUT, sve je u redu. Medjutim, ako stavim sleep() u petlju funkcije koja se izvrsava u thread-u (linija (1)), onda se samo prvi thread izvrsi i petlja u njoj se izvrsi samo jednom. Zasto? Code: #include <stdio.h> #include <pthread.h> /* Thread start function, counts to 10 and exits. */ void* f(void* arg) { char* param = (char*)arg; int i; for (i = 1; i <= 10; i++) { printf("\n%s %d", param, i); sleep(1);/* (1) */ } return NULL; } int main(void) { pthread_attr_t attr1; pthread_attr_t attr2; pthread_t th1; pthread_t th2; char arg1[10] = "thread1"; char arg2[10] = "thread2"; pthread_attr_init(&attr1); pthread_attr_init(&attr2); pthread_attr_setdetachstate(&attr1, PTHREAD_CREATE_DETACHED); pthread_attr_setdetachstate(&attr2, PTHREAD_CREATE_DETACHED); pthread_create(&th1, &attr1, &f, arg1); pthread_create(&th2, &attr2, &f, arg2); printf("\n"); return 0; } Sve lepo radi ako koristim joinable threads i pthread_join(), tada nema problema sa pozivom sleep(). Zasto detached thread pravi problem? |