| #include <pthread.h> | |
| #include <utf.h> | |
| #include <fmt.h> | |
| pthread_key_t key; | |
| void | |
| pexit(void *v) | |
| { | |
| int s; | |
| pthread_setspecific(key, (void*)1); | |
| switch(fork()){ | |
| case -1: | |
| fprint(2, "fork: %r\n"); | |
| case 0: | |
| _exit(0); | |
| default: | |
| wait(&s); | |
| } | |
| pthread_exit(0); | |
| } | |
| int | |
| main(int argc, char *argv[]) | |
| { | |
| int i; | |
| pthread_t pid; | |
| pthread_key_create(&key, 0); | |
| for(i=0;; i++){ | |
| print("%d\n", i); | |
| if(pthread_create(&pid, 0, pexit, 0) < 0){ | |
| fprint(2, "pthread_create: %r\n"); | |
| abort(); | |
| } | |
| } | |
| } |