One more thing. Pretty much every database that is written in C++ or Java uses native kernel threads for non-blocking I/O as well. They didn't use Seaster or Quasar but anyways I am going to read up on Seaster and see what it really does.
On Sun, Mar 12, 2017 at 3:48 AM, Kant Kodali <k...@peernova.com> wrote: > > If you have thread-per-core and N (logical) cores, and have M tasks >> running concurrently where M > N, then you need a scheduler to decide which >> of those M tasks gets to run on those N kernel threads. Whether those M >> tasks are user-level threads, or callbacks, or a mix of the two is >> immaterial. In such cases a scheduler always exists, even if it is a >> simple FIFO queue. >> > > >> yes ofcourse scheduler is needed. But what you said is immaterial is >> where I see the devil or say our conflict of arguments really are. Let the >> kernel thread per core deal with callbacks rather than having to build a >> user-level thread library and its scheduling mechanisms and the mapping >> between them. This sounds more of an overhead in general but may work in a >> specific case. >> > >