devil@TECHUNIX.BITNET (Gil Tene) (07/09/90)
How can I put up RELIABLE communications between two processes under SunOS 4.0.3 ? I know, I know, signals, sockets, SysV IPC (message queues and semaphores).... BUT : I have been trying to synchronize two processes using several different mechanisms, especialy signals/pause(), message queues, and combinations of both. All methods SEEM to work, but I occasionaly get deadlocked using ANY one of them. It seems that either pause() "looses" a signal (even though the signal handler is executed) sometimes, and that message queues occasionally "loose" messages. This happens under heavy load, but I have isolated specific cases, and I have specifically seen one process send a message, while another stays on waiting for it, and never gets it, as well as similar behavior with signals/pause(). I am under the impression that IPC under SunOS may not BE reliable, and may fail under heavy load conditions. After all, when I read any of the manuals, it just describes functionality, but never says anything about reliability... Is this TRUE ?!!! Has anyone got a "totaly fool proof" process sync. set-up written using ANY of the SunOS tools? are there any Sun guys out there who care to comment ? Does anyone out there know of "promised" behaviour rules of signals and/or message queues. Rules like : - "pause() will ALWAYS return if a signal occured." - "When getting a signal, the signal handler will ALWAYS execute before the pause() function exits." - "msgrcv() will ALWAYS return when a message is available on entry , or at any later time." I would be more than glad to retract any and all of these "accusations" if someone points out the error of my ways. I am looking for a reliable solution, that's all... AdvThanks, | Gil Tene "Some days it just doesn't pay | | devil@techunix.technion.ac.il to go to sleep in the morning." |