
I was thinking about thread killing, and why we think it's okay to kill OS processes but not threads. Killing an OS process is unlikely to cause other processes with which it's communicating to hang, since closing one end of a pipe or socket causes anything on the other end to get EOF on reading or a signal or error on writing. But the way threads usually communicate, using locks and queues, means that it's easy for a thread to get hung up waiting for something that another thread is supposed to do, but won't, because it's been killed. So I'm wondering if we want something for inter- thread communication that works something like a cross between a queue and a pipe. It knows what threads are connected to it, and if all threads on one end exit or get killed, threads on the other end find out about it. We could call it a Quipe or Sockqueue or Quocket (or if we want to be boring, a Channel). This would probably have to be hooked into the threads implementation at a low level, since it would need to be able to detect the death of a thread by any means, without relying on any cooperation from the user's code. -- Greg Ewing, Computer Science Dept, +--------------------------------------+ University of Canterbury, | Carpe post meridiem! | Christchurch, New Zealand | (I'm not a morning person.) | greg.ewing@canterbury.ac.nz +--------------------------------------+