Co robi exit(*(int *)x)


(Damian True) #1
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>

void *fa(void *x) {
 printf("fa 1 \n");
 sleep(3);
 printf("fa 2 \n");
 sleep(3);
 printf("fa 3 \n");
}
void *fb(void *x){
 sleep(5);
 exit(*(int *)x); <---1
 printf("fb 1 \n");
}
void *fc(void *x){
 sleep(4);
 pthread_cancel(*(int *)x);
 printf("fc 1 \n");
}

int main(){
 pthread_t a,b,c;
 pthread_create(&a, NULL,fa,NULL);
 pthread_create(&b, NULL, fb, &a);
 pthread_create(&c, NULL, fc, &b);
 sleep(10);
 return 0;
}

Co robi "exit(*(int *)x);" zamyka cały program z wszystkimi wątkami czy sam wątek "&a" w tym kontekście który jest przekazany jako parametr?


(Adm Osytek) #2

http://cpp0x.pl/dokumentacja/standard-C/exit/362"Funkcja kończy działanie aplikacji po zwolnieniu zasobów globalnych."