Μεταβίβαση μηνύματος
Άλλος τρόπος διαδιεργασιακής επικοινωνίας είναι η χρήση της
μεταβίβαση μηνύματος (message passing) που
μπορεί να εκφραστεί με τις διαδικασίες:
- send(destination, message)
- receive(destination, message)
Ο συντονισμός της αποστολής και της παραλαβής μπορεί να γίνει:
Με τις κλήσεις αυτές μπορεί να εκφραστεί το πρόβλημα του
παραγωγού-καταναλωτή.
const N = 100;
int queue[N];
void
producer(void)
{
int item;
message m;
for (;;) {
create(&item);
receive(consumer, &m);
build_message(item, &m);
send(consumer, &m);
}
}
void
consumer(void)
{
int item;
message m;
for (i = 0; i < 100; i++)
send(producer, &m);
for (;;) {
receive(producer, &m);
extract_item(&m, &item);
send(producer, &m);
consume(&item);
}
}