'scuse me for interrupting. Its just the 'communications' between your two halves. In the Windows world I may be a naughty boy suggesting this. The thing is that I've been programming unix since the old queen died (god rest his soul) and used to have the same communicate-between-threads-especially-at-speed headaches until I discovered the joys of services. The nature of most of my programs (factory control stuff) is very modular, though not entirely independant. I devised a packet system that all of my programs understand (to varrying degrees depending on their need), I stole a service port number and bounce messages off that. I'm sure you Mr Freeze are able to understand how its done, but for the sake of others let me give a briefing on it. //The packets. These are C structs but you can use classes just as //well, or better, I just have to take into account programs I //wrote //a million years ago and have misplaced the source. struct { UINT StructSize; UINT DataSize; /*Because i use a shared service number I need each program to have an ID. So that others receiving the packets know if this is one there need to listen to.*/ UINT ProgramID; /*even if its the right progam, will I understand it? */ UINT ProgramVersion; /* for real time apps time can be important. BETTERTIME is just a 'union' of mine which holds time in a DWORD format as well as being able to get at the elements in byte form. (usefull for sorting and comparison)*/ BETTERTIME Time; /*Command/Type of information contained. It does not need to be globally understood, though for the sake of future proofing I tend to make it unique across applications. If this message isn't for this thread then we do not get as far as checking this*/ UINT Command; void* Data }; Each program is able to be server or client. It starts by sending a Welcome message. If no one replies then it assumes the role of server. As server it keeps a list of all clients that come online and reflects all messages to all clients. I also added the ability to pass this client information to 'prime' clients so that is a server is lost another can take over without much loss. It can of cause be changed such that a dedicated server is present, but the orriginal point was that I wanted all threads/programs to be able to talk to all others. Also I didn't want to be in a situation where data is not collected because there is no server present. As I said, its my first day on this list and I'm not certain yet what level of information to