I apologize for actually using this mailing list for its intended purpose, but you'll just have to deal with it. ;p I've been sort of thinking about how to go about rewriting Circle for a fork/vfork/etc style of input and output. It would be a MAJOR rewrite, of course... or at least a big one. However, since this would be my first experience with real official multitasking, it shouldn't hurt me to think about it a little (in the event that I need to use it at a later date, or ever get around to doing that rewrite). I've come up with a couple of different problems, or at least dizzyingly complex solutions to said problems. I was sort of thinking that the parent process would do the listening (though I don't think it's necessary, provided only one of the children listens at a time). When it received a connection, it would really fast do the accepting and so on, then fork (or vfork) a child process, giving it control of the connected socket from there on. The pid and socket would be duplicated in a structure so that the parent process could kill all the children on its death (this sounds really nasty) and manage inter-process communications. However, my problem is how to manage inter-process communications. I would assume that I need some kind of shared memory, unless I want to use a file, which is a little risky (and slower besides). So, how would I do that? Assume that child 1 writes a request for a list of who's online to the shared memory. The parent catches the request, then dispatches its own request to the shared memory pool. Each of the children check occasionally and when they do write their information to the pool. The glaring problem is that the first child to write to the pool will overwrite the request and the other children will be oblivious to the fact that a request was ever made; meanwhile, the parent hangs, waiting endlessly for the answers from the other processes, and the requesting process hangs as well, waiting for an answer from the parent. Any suggestions? Ideally, I'd like to keep files out of it (as much as files can be kept out of any program that runs on a UNIX computer) and rely solely on memory. How much work would it be to get a fancy message queueing system running? To hell with a fancy one, any queueing system that works is fine with me. Actually... this IS sort of the incorrect message for the mailing list, but hey. It's better than flames back and forth. ___________________________________________________________________________ icarus@Crocker.COM http://www.crocker.com/~icarus Berserker Dragon -=={UDIC}==- Ultima Dragons, Internet Chapter Lord Eric P. McCoy IV Knights of the Cosmos ***************************************************************************
This archive was generated by hypermail 2b30 : 12/07/00 PST