| #include <lib9.h> | |
| #include <thread.h> | |
| Channel *c[3]; | |
| void | |
| pingpong(void *v) | |
| { | |
| int n; | |
| Channel **c; | |
| c = v; | |
| do{ | |
| n = recvul(c[0]); | |
| sendul(c[1], n-1); | |
| }while(n > 0); | |
| exit(0); | |
| } | |
| void | |
| threadmain(int argc, char **argv) | |
| { | |
| c[0] = chancreate(sizeof(ulong), 1); | |
| c[1] = chancreate(sizeof(ulong), 1); | |
| c[2] = c[0]; | |
| proccreate(pingpong, c, 16384); | |
| threadcreate(pingpong, c+1, 16384); | |
| sendul(c[0], atoi(argv[1])); | |
| } |