ABOUT MESSAGE QUEUE

I need an help about message queue.
Do you know if non-blocking queues work under QNX?
Please if you can give me an answer …
FABIO

Yes they work fine. Check out (on a QNX 4.2x system)
/etc/readme/mqueue/mq_overview.doc and the watcom manual for mq_xxx
calls.

Zanon Fabio wrote:

I need an help about message queue.
Do you know if non-blocking queues work under QNX?
Please if you can give me an answer …
FABIO

Zanon Fabio <zanon.f@tecnomare.it> wrote:

I need an help about message queue.
Do you know if non-blocking queues work under QNX?

Yes, they do. You need to set the appropriate flag in the
attribute structure for the mq_open() call. But, it is important
to note that message queues under QNX are implemented on top of
Send()/Receive()/Reply() [or MsgSend()/MsgReceive()/MsgReply() for
QNX Neutrino], so even a (nominally) non-blocking mqsend() will actually
make a blocking [Msg]Send() call to the Mqueue [mqueue] server, which
is supposed to respond “quickly” such that it doesn’t block for very
long.

Also, message queues are less efficient than messages for moving larger
amounts of data as they require 2 S/R/R transactions to move the data,
rather than just one.

-David

QNX Training Services
dagibbs@qnx.com

Be careful which version of Mqueue you use - 4.24A is better than 4.24B - I
don’t know what the latest shipped by QNX is.

KenR

David Gibbs wrote:

Zanon Fabio <> zanon.f@tecnomare.it> > wrote:
I need an help about message queue.
Do you know if non-blocking queues work under QNX?

Yes, they do. You need to set the appropriate flag in the
attribute structure for the mq_open() call. But, it is important
to note that message queues under QNX are implemented on top of
Send()/Receive()/Reply() [or MsgSend()/MsgReceive()/MsgReply() for
QNX Neutrino], so even a (nominally) non-blocking mqsend() will actually
make a blocking [Msg]Send() call to the Mqueue [mqueue] server, which
is supposed to respond “quickly” such that it doesn’t block for very
long.

Also, message queues are less efficient than messages for moving larger
amounts of data as they require 2 S/R/R transactions to move the data,
rather than just one.

-David

QNX Training Services
dagibbs@qnx.com

I had problems with systems using 4.24B that I was tracking down when I was
informed that 4.24A was the latest version. When I switched to 4.24A my systems
ran without problems so I didn’t investigate anymore. I think 4.24B was a test
for something and I don’t recall where I got it.

KenR

“Ignacio Marín” wrote:

What is the meaning of “better” in that sentence?
Faster? More reliable?

Thanks in advance…

rectech <> rectech@iname.com> > escribió en el mensaje de noticias
3A525492.5CDD67D2@iname.com> …
Be careful which version of Mqueue you use - 4.24A is better than 4.24B -
I
don’t know what the latest shipped by QNX is.

KenR

David Gibbs wrote:

Zanon Fabio <> zanon.f@tecnomare.it> > wrote:
I need an help about message queue.
Do you know if non-blocking queues work under QNX?

Yes, they do. You need to set the appropriate flag in the
attribute structure for the mq_open() call. But, it is important
to note that message queues under QNX are implemented on top of
Send()/Receive()/Reply() [or MsgSend()/MsgReceive()/MsgReply() for
QNX Neutrino], so even a (nominally) non-blocking mqsend() will actually
make a blocking [Msg]Send() call to the Mqueue [mqueue] server, which
is supposed to respond “quickly” such that it doesn’t block for very
long.

Also, message queues are less efficient than messages for moving larger
amounts of data as they require 2 S/R/R transactions to move the data,
rather than just one.

-David

QNX Training Services
dagibbs@qnx.com

What is the meaning of “better” in that sentence?
Faster? More reliable?

Thanks in advance…



rectech <rectech@iname.com> escribió en el mensaje de noticias
3A525492.5CDD67D2@iname.com

Be careful which version of Mqueue you use - 4.24A is better than 4.24B -
I
don’t know what the latest shipped by QNX is.

KenR

David Gibbs wrote:

Zanon Fabio <> zanon.f@tecnomare.it> > wrote:
I need an help about message queue.
Do you know if non-blocking queues work under QNX?

Yes, they do. You need to set the appropriate flag in the
attribute structure for the mq_open() call. But, it is important
to note that message queues under QNX are implemented on top of
Send()/Receive()/Reply() [or MsgSend()/MsgReceive()/MsgReply() for
QNX Neutrino], so even a (nominally) non-blocking mqsend() will actually
make a blocking [Msg]Send() call to the Mqueue [mqueue] server, which
is supposed to respond “quickly” such that it doesn’t block for very
long.

Also, message queues are less efficient than messages for moving larger
amounts of data as they require 2 S/R/R transactions to move the data,
rather than just one.

-David

QNX Training Services
dagibbs@qnx.com