#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); }