| #include "a.h" | |
| typedef struct New New; | |
| struct New | |
| { | |
| void (*fn)(void*); | |
| void *arg; | |
| }; | |
| Channel *mailthreadchan; | |
| void | |
| mailthread(void (*fn)(void*), void *arg) | |
| { | |
| New n; | |
| n.fn = fn; | |
| n.arg = arg; | |
| send(mailthreadchan, &n); | |
| } | |
| void | |
| mailproc(void *v) | |
| { | |
| New n; | |
| USED(v); | |
| while(recv(mailthreadchan, &n) == 1) | |
| threadcreate(n.fn, n.arg, STACK); | |
| } | |
| void | |
| mailthreadinit(void) | |
| { | |
| mailthreadchan = chancreate(sizeof(New), 0); | |
| proccreate(mailproc, nil, STACK); | |
| } | |