Prove scritte 2023
Parziale 2023/01/20
Esercizio c2
Dato un servizio di message passing asincrono implementare un servizio di message passing sincrono a scambio che prevede una sola chiamata:
T xchange(T msg, pid_t dest)
dove T è un tipo generico (potrebbe essere int, string, struct mystruct). Il parametro dest non può essere ANY. Quando il processo P chiama xchange(m1, Q) e il processo Q chiama xchange(m2, P) entrambi i processi vengono riattivati, la xchange chiamata da P restituirà m2 mentre la xchange di Q restituirà m1.
Soluzione proposta 1
Proposta da SpookyWiki (talk) 16:55, 17 May 2023 (CEST)
T xchange(T msg, pid_t dest) {
asend(msg, dest);
return arecv(dest);
}