of course we ve had select since bsd NUMBER NUMBER and poll since system v or so and they work reasonably well for asynchronous i o up to a hundred or so channels but suck after that dev poll available in solaris and linux is one approach to solving this linux has a way to do essentially the same thing with real time signals and has for years and freebsd has kqueue more details about these are at URL none of this helps with disk i o most programs that need to overlap disk i o with computation on either proprietary unixes or linux just use multiple threads or processes to handle the disk i o posix specifies a mechanism for nonblocking disk i o that most proprietary unixes implement the linux kernel hackers are currently rewriting linux s entire i o subsystem essentially from scratch to work asynchronously because they can easily build efficient synchronous i o primitives from asynchronous ones but not the other way around so now linux will support this mechanism too it probably doesn t need saying for anyone who s read beberg saying things like memory management is a non issue for anyone that has any idea at all how the hardware functions but he s totally off base people should know by now not to take anything he says seriously but apparently some don t so i ll rebut not surprisingly the rebuttal requires many more words than the original stupid errors in detail he wrote could it be after NUMBER years without this feature unix finally catches up to windows and has i o that doesnt sic totally suck for nontrivial apps no way unix acquired nonblocking i o in the form of select about NUMBER years ago and solaris has had the particular aio_ calls we are discussing for many years very few applications need the aio_ calls essentially only high performance rdbms servers even benefit from them at all and most of those have been faking it fine for a while with multiple threads or processes this just provides a modicum of extra performance ok so they do it with signals or a flag which is completely ghetto but at least they are trying keep trying guys you got the idea but not the clue readers can judge who lacks the clue here the windows i o model does definately sic blow the doors off the unix one but then they had select to point at in it s sic suckiness and anything would have been an improvement unix is just now looking at it s sic i o model and adapting to a multiprocess multithreaded world so it s gonna be years yet before a posix api comes out of it although i don t have a copy of the spec handy i think the aio_ apis come from the posix spec ieee std NUMBER NUMBER NUMBER section NUMBER NUMBER NUMBER which is NUMBER years old and which i think documented then current practice they might be even older than that unix has been multiprocess since NUMBER and most unix implementations have supported multithreading for a decade or more bottom line is the do stuff when something happens model turned out to be right and the unix look for something to do and keep looking till you find it no matter how many times you have to look is not really working so great anymore linux s aio_ routines can notify the process of their completion with a signal a feature missing in microsoft windows a signal causes the immediate execution of a signal handler in a process by contrast the microsoft windows mechanisms to do similar things such as completion ports do not deliver a notification until the process polls them i don t think signals are a better way to do things in this case although i haven t written any rdbmses myself but you got the technical descriptions of the two operating systems exactly backwards most programs that use linux real time signals for asynchronous network i o in fact block the signal in question and poll the signal queue in a very windowsish way using sigtimedwait or sigwaitinfo kragen pobox com kragen sitaker URL edsger wybe dijkstra died in august of NUMBER this is a terrible loss after which the world will never be the same URL 