I have a multi-process project, and I use the domain sockets as the IPC method.
For example, the process A has the multiple threads and they calls 'write' function to send the data to the process B. (All the domain socket functions are protected by the semaphore.) When the system gets busy, one thread are blocked in the 'write' and it does not released at all. I checked the process B and there is no problem, it still call 'select' and 'read' functions with few time losses. (At least 10ms, according the tick.)
Is there any cases that 'write' function in the domain socket blocks except that the receiver does not read the data? I checked that there is no problem in the process B - receiving part at all. It worked without any blocking situation. The number of threads that calls 'write' are about 5~6, and they call 'write' quite frequently. (Somecases, 100~200 times per 1 seconds.)
My project is MIPS-based embedded linux system. The toolchain uses the uclibc so it may be different with the PC-based linux system.