void sasend(msg_t msg, pid_t dst) { asend((getpid(), msg), dst) } Dic> db; msg_t sarecv(pid_t sndrs[]) { for(sndr in sndrs) { if(!db.has(sndr) || db.get(sndr).size() == 0) continue; return db.get(sndr).pop() } (pid_t, msg_t) (sndr, msg); do { (sndr, msg) = arecv() if(!(sndr in sndrs)) db.get(sndr).push(msg) } while(!(sndr in sndrs)) return msg; }