Blame


1 1544f909 2004-12-25 devnull #include <pthread.h>
2 1544f909 2004-12-25 devnull #include <utf.h>
3 1544f909 2004-12-25 devnull #include <fmt.h>
4 1544f909 2004-12-25 devnull
5 1544f909 2004-12-25 devnull pthread_key_t key;
6 1544f909 2004-12-25 devnull
7 1544f909 2004-12-25 devnull void
8 1544f909 2004-12-25 devnull pexit(void *v)
9 1544f909 2004-12-25 devnull {
10 1544f909 2004-12-25 devnull int s;
11 1544f909 2004-12-25 devnull
12 1544f909 2004-12-25 devnull pthread_setspecific(key, (void*)1);
13 1544f909 2004-12-25 devnull switch(fork()){
14 1544f909 2004-12-25 devnull case -1:
15 1544f909 2004-12-25 devnull fprint(2, "fork: %r\n");
16 1544f909 2004-12-25 devnull case 0:
17 1544f909 2004-12-25 devnull _exit(0);
18 1544f909 2004-12-25 devnull default:
19 1544f909 2004-12-25 devnull wait(&s);
20 1544f909 2004-12-25 devnull }
21 1544f909 2004-12-25 devnull pthread_exit(0);
22 1544f909 2004-12-25 devnull }
23 1544f909 2004-12-25 devnull
24 1544f909 2004-12-25 devnull int
25 1544f909 2004-12-25 devnull main(int argc, char *argv[])
26 1544f909 2004-12-25 devnull {
27 1544f909 2004-12-25 devnull int i;
28 1544f909 2004-12-25 devnull pthread_t pid;
29 1544f909 2004-12-25 devnull
30 1544f909 2004-12-25 devnull pthread_key_create(&key, 0);
31 1544f909 2004-12-25 devnull for(i=0;; i++){
32 1544f909 2004-12-25 devnull print("%d\n", i);
33 1544f909 2004-12-25 devnull if(pthread_create(&pid, 0, pexit, 0) < 0){
34 1544f909 2004-12-25 devnull fprint(2, "pthread_create: %r\n");
35 1544f909 2004-12-25 devnull abort();
36 1544f909 2004-12-25 devnull }
37 1544f909 2004-12-25 devnull }
38 1544f909 2004-12-25 devnull }