We were planning to use the mqueue functions to message between processes.
What I’m seeing in a test program is that a non-blocking call to the
mq_receive takes about 100 usec to return. That’s when there are no messages
to receive in the queue. What in the world could take so much time? The
sending and receiving processes are created with default priority. Thanks
for any insight into this problem.
By the way, I’m not stuck on the use of mqueue functions. It seemed like a
more direct solution to our immediate problems, but not at the cost of 100
usec. So if the SRR model will allow more efficient processing of messages,
I think we can adapt to it.
Best Regards,
Dave Kuechenmeister
David Kuechenmeister <david.kuechenmeister@viasat.com> wrote:
We were planning to use the mqueue functions to message between processes.
What I’m seeing in a test program is that a non-blocking call to the
mq_receive takes about 100 usec to return. That’s when there are no messages
to receive in the queue. What in the world could take so much time? The
sending and receiving processes are created with default priority. Thanks
for any insight into this problem.
By the way, I’m not stuck on the use of mqueue functions. It seemed like a
more direct solution to our immediate problems, but not at the cost of 100
usec. So if the SRR model will allow more efficient processing of messages,
I think we can adapt to it.
Under QNX, all the mqueue functions are implemented on top of SRR with
a seperate mqueue manager process.
So, mq_receive() is, really
build message
MsgSend() to mqueue
MsgReceive in mqueue blocks,
mqueue checks the queue
MsgReply/MsgError with result
return nothing to you
SRR is, in general, at least 2* faster than moving the equivalent amount
of data with mq*.
-David
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.
Thanks David. We re-wrote the messaging to use SRR and gained 85 usec in the
bargain.
Best Regards,
David Kuechenmeister
“David Gibbs” <dagibbs@qnx.com> wrote in message
news:a6oeea$ks8$2@nntp.qnx.com…
David Kuechenmeister <> david.kuechenmeister@viasat.com> > wrote:
We were planning to use the mqueue functions to message between
processes.
What I’m seeing in a test program is that a non-blocking call to the
mq_receive takes about 100 usec to return. That’s when there are no
messages
to receive in the queue. What in the world could take so much time? The
sending and receiving processes are created with default priority.
Thanks
for any insight into this problem.
By the way, I’m not stuck on the use of mqueue functions. It seemed like
a
more direct solution to our immediate problems, but not at the cost of
100
usec. So if the SRR model will allow more efficient processing of
messages,
I think we can adapt to it.
Under QNX, all the mqueue functions are implemented on top of SRR with
a seperate mqueue manager process.
So, mq_receive() is, really
build message
MsgSend() to mqueue
MsgReceive in mqueue blocks,
mqueue checks the queue
MsgReply/MsgError with result
return nothing to you
SRR is, in general, at least 2* faster than moving the equivalent amount
of data with mq*.
-David
QNX Training Services
http://www.qnx.com/support/training/
Please followup in this newsgroup if you have further questions.