It's a generic class for all instances of work that's i/o bound. Specific uses are filters and hashes which take a score or so of cycles per byte of data. (much less than time to read the data) I'm allocating the buffers on the stack and using overlapped i/o but wasn't sure if the operating system was actually able to asynchronously read the data or if just spawned another thread to do it. If it's just another thread, for a single processor, it'd seem better to just use a memory mapped file right? No overhead for the wait operations and processor is fully tied up reading (on each page fault) or processing. If overlapped i/o really is asynchronous on a single processor, then what I've got now should be optimal. Also I wonder, if the OS has the capability for real asynchronous reads on a single processor, would it be using that to help page in from a memory mapped file? Maybe the memory mapped file can match the overlapped i/o technique because the os is smart? (opened with sequential access for clue? I doubt but wonder.) (yeah buffer sizes are calculated for optimal size-- you have to pass working block size, processing cost and wait cost (about 10K cycles I found from experiments on XP) for the overlapped i/o-- it can be shown that optimal # of rounds is independent of read cost assuming that it's greater than processing cost.) Thanks!