Signals Vs Pulses


I would like to know the following

  1. Is there any difference between signals (POSIX) and pulses in QNX? I don’t find any difference between them in the way it operates

  2. What happens when the threads on blocked on “MsgReceive()()”/"MsgSend() if we receive the signals?

For example: The process AB contains two threads A and B and assume that they are in BLOCKED state not READY
Thread A is blocked on “MsgReceive()”
Thread B is blocked on "MsgSend()
What would happen to process AB and the threads if it receives signal?


1 ) Oh another case of RTFM. There are huge differences, signals can’t get queued, signals don’t have any payload, signals can’t make it accros the network, signals don’t have priorities. Pulses don’t interrupt flow of code.

2 ) In both cases the fonction will get interrupted, return -1 and set errno to EINTR. A process that is blocked cannot be in any other state ( READY).

Thanks Mario for the explanation.
Will the server be informed if client unblocks due to signals? For example: client is SEND/REPLY blocked and receives the signal. As you mentioned MsgSend() would return -1 and will it inform the server (listening on MsgReceive()) that Sender is unblocked as server has not replied to client using MsgReply()

Please clarify

If a client is SEND blocked on a server and gets a signal, the server is not informed. There’s no reason to.

If a client is REPLY blocked on a server, the server can get a PULSE indicating this event. The signal does not take affect until the server replies. The server does not have to reply immediately although it is bad form not to.