Update of /src/master/dx/src/uipp/dxui
In directory opendx.watson.ibm.com:/tmp/cvs-serv11102/dxui

Modified Files:
        ImageNode.C ImageNode.h Node.C Node.h ToggleNode.C 
        ToggleNode.h 
Log Message:
Change PacketIF so that it gives priority to reads from dxexec over writes
to dxexec.  The mechanism for this is storing outgoing messages in a 
fifo Q whenever a writer detects that there is input 
from dxexec available at the socket.  
Tests for this fix are 1) setting DX_SOCKET_BUFSIZE to a small value such
as 1 or 2 or a few K.  2) running nets from http://www.mcell.psc.edu/DReAMM and
http://www.mcell.psc.edu/dreammx.  (I hope) All places within dxui that
use the socket connection to dxexec now go through PacketIF.  No one should
ever use DXD_NON_UNIX_SOCKETS except for PacketIF.  N.B.  The deadlock
problem is spackled over but not Fixed.  In other words, it can still happen.  
It's
just less likely to happen.  It can't be completely fixed as long
as calls such as fwrite and fputs can block.  The right combination of
processor speed and cosmic alignment will cause a deadlock.  Still,
I suspect it won't be a big problem any more.
P.S. I hope the new code is cross-platform and helps out the pc as well.

Reply via email to