Has anyone here worked with *USRQ? There is a problem when exchanging between threads via usrq
There are two threads that are quite intensively exchanging messages via KEYED USRQ (one sends messages with the key KEY1 and reads with the key KEY2, the second vice versa).
The problem is that if all this works in two different jobs, then everything is fine. But when in two different threads of the same task, problems with "sticking" begin - a message that is definitely sent from one thread becomes available for reading from another after a long time (maximum was fixed up to 120 seconds).
Judging by the stack, both threads are currently in the message waiting state (DEQWAIT) - one thread has sent a message and is waiting for a response message from the second, but the second cannot receive the sent message for a long time.
I repeat - the problem is only when exchanging messages between two threads within the same job. If the exchange is between two different jobs, everything works very quickly.​
There are two threads that are quite intensively exchanging messages via KEYED USRQ (one sends messages with the key KEY1 and reads with the key KEY2, the second vice versa).
The problem is that if all this works in two different jobs, then everything is fine. But when in two different threads of the same task, problems with "sticking" begin - a message that is definitely sent from one thread becomes available for reading from another after a long time (maximum was fixed up to 120 seconds).
Judging by the stack, both threads are currently in the message waiting state (DEQWAIT) - one thread has sent a message and is waiting for a response message from the second, but the second cannot receive the sent message for a long time.
I repeat - the problem is only when exchanging messages between two threads within the same job. If the exchange is between two different jobs, everything works very quickly.​
Comment