Blob


1 #include "a.h"
3 typedef struct New New;
4 struct New
5 {
6 void (*fn)(void*);
7 void *arg;
8 };
10 Channel *mailthreadchan;
12 void
13 mailthread(void (*fn)(void*), void *arg)
14 {
15 New n;
17 n.fn = fn;
18 n.arg = arg;
19 send(mailthreadchan, &n);
20 }
22 void
23 mailproc(void *v)
24 {
25 New n;
27 while(recv(mailthreadchan, &n) == 1)
28 threadcreate(n.fn, n.arg, STACK);
29 }
31 void
32 mailthreadinit(void)
33 {
34 mailthreadchan = chancreate(sizeof(New), 0);
35 proccreate(mailproc, nil, STACK);
36 }