On Mon, Jul 22, 2019 at 11:42 AM Antoine Pitrou <solip...@pitrou.net> wrote: > > On Mon, 22 Jul 2019 11:07:43 -0500 > Wes McKinney <wesmck...@gmail.com> wrote: > > > > Right, which is why I'm suggesting a simple model to allow threads > > that are waiting on IO to allow other threads to execute. > > If you are doing memory-mapped IO, how do you plan to tell whether and > when you'll be going to wait for IO? >
Probably the way is to introduce async-capable read APIs into the file interfaces. For example: file->ReadAsyncBlock(thread_ctx, ...); That way the file implementation can decide whether asynchronous logic is actually needed. I doubt very much that a one-size-fits-all concurrency solution can be developed -- in some applications coarse-grained IO and CPU task scheduling may be warranted, but we need to have a solution for finer-grained scenarios where * In the memory-mapped case, there is no overhead and * The programming model is not too burdensome to the library developer > Regards > > Antoine. > >