|It's time for another Programmer Babble. Trying to make non-blocking networking things work alike on both Lunix and Windows. It rather seems to me that Lunix has only a very clumsy and horrible mechanism for doing non-blocking things. Sure, it has a mediocre method that uses signals, that's only half implemented and isn't shared by other unix variants, making it about as useful as using the MFC, dynamically linking it, and not distributing the DLL. Windows, on the other hand, has had relatively nice message-based sockets for nigh on 7 years. After spending some time trying to get decent asynchronous sockets behaving reasonably in Lunix, I suddenly understand why Squid was doing a horrendous CPU-eating thing a while back, why Apache starts up a billion and five threads when you run it, why SQL implementations are clumpy - it's because Lunix sucks. What I'd really like to see is an asynchronous sockets implementation that goes one step beyond Windows' - instead of handing you a note saying "hey, I've got data when you want it", I want the OS to hand me the data straight off the bat. That said, at least with Windows it's fairly easy to wrap the "hey, I've got data" sockets in an extra layer of fluff that will behave pretty much like a "here's your data" implementation. As, indeed, I have done. It's a pain to do the same for Lunix, since message queues are not the norm there. Trying to make something that will work with both Lunix and Windows is another layer of awkwardness altogether, with uncertainty as to how each one will behave given unusual and unexpected input. Gngh.