“This online training lesson contains material taken from our introductory courses. This particular section presents the basic approaches to message passing for communication between concurrent tasks. In an actual training course, this section would be preceded by introductory sessions covering the fundamental definitions of embedded and real-time systems, as well as the fundamentals of multi-tasking (priority-based pre-emptive task scheduling).” Read it here.
very good article but a little more detail about message priorities would have been nice.
This tutorial doesn’t actually seem to tell you anything but “This is what a message queue is”. Not exactly rocket science stuff.
No really. They didn’t even mention that most (modern) systems would rather use copy-on-write instead of copying everything twice (does Darwin do this?), or that to be useful, there would have to be a select() call that allows you to wait for messages pending at _different_ queues (like synchronous IPC on Unix).
I wonder if there is an open source message queueing system like IBM Websphere MQ out there. I didn’t find anything on Freshmeat. Any information about that?
MUSCLE – http://www.lcscanada.com/muscle/index.html
Whilst it’s aimed more at a client/server architecture, I see no reason that it can’t be used as a middleware layer. I believe LCS actually *do* use it as such.
One can look at JBoss for open source MQ, even if it is in Java. IBM has de-emphasized their traditional MQ interfaces in favor of Java anyway.
As for “copy on write” vs. “copy always”… it all depends. Many modern systems achieve massive parallelization via “copy always”. It depends how many execution units you have available and how expensive context switches are. The author’s article is a bit simplistic anyhow to even begin talking performance. I believe it is geared towards getting the basic concepts across.
Thanks – the description of muscle sounds quite interesting.
To JBoss: I thought of a more lightweight system regarding memory usage
(OK MQSeries is definitely NOT lightweight…)
This problem comes from letting graphic designers (trained to lay out type for print) loose on web pages.
They have trouble believing that a web page is a completely different design problem from a page in a printed magazine.