Blob


1 #include <lib9.h>
2 #include <thread.h>
4 Channel *c[3];
7 void
8 pingpong(void *v)
9 {
10 int n;
11 Channel **c;
13 c = v;
14 do{
15 n = recvul(c[0]);
16 sendul(c[1], n-1);
17 }while(n > 0);
18 exit(0);
19 }
21 void
22 threadmain(int argc, char **argv)
23 {
24 c[0] = chancreate(sizeof(ulong), 1);
25 c[1] = chancreate(sizeof(ulong), 1);
26 c[2] = c[0];
28 proccreate(pingpong, c, 16384);
29 threadcreate(pingpong, c+1, 16384);
30 sendul(c[0], atoi(argv[1]));
31 }