RTSYST Opdracht 4: Message Queue in POSIX.

© Harry Broeders.

Message based in plaats van Shared Memory based synchronisatie.

Bij het gebruik van semaphoren, mutexen en conditionele variabelen wordt gemeenschappelijk geheugen gebruikt om te synchroniseren. Het is ook mogelijk om met behulp van message passing te synchroniseren. De IEEE Std 1003.1 definieert voor dit doel zogenaamde message queues. Zie eventueel paragraaf 6.7 in het theorieboek. De relevante functies zijn:

mq_open ,   mq_open
mq_close ,   mq_close
mq_unlink ,   mq_unlink
mq_send ,   mq_send
mq_receive ,   mq_receive

Opdracht 4.

Vervang in het voorbeeld programma uit opdracht 2 (opdr2.c  met makefile of opdr2.cpp  met makefile) de synchronisatie met semaphoren door synchronisatie met messages. Welke prioriteit moet je aan de messages geven om het gedrag van het voorbeeldprogramma zo min mogelijk te veranderen.

In de onderstaande figuur is een mogelijke oplossing met behulp van 2 message queues schematisch weergegeven:

Message based snacken

Verder met opdracht 5...