On Tue, Aug 7, 2012 at 1:45 PM, Jeff Darcy <jdarcy@xxxxxxxxxx> wrote:
On Tue, 7 Aug 2012 20:13:35 +0200
manu@xxxxxxxxxx (Emmanuel Dreyfus) wrote:
I should probably let the authors speak for themselves, but I suspect
> Anand Avati <anand.avati@xxxxxxxxx> wrote:
> What was behind the decision to use swapcontext, btw? Why not just
> have a thread for each task?
it's because operations like self-heal and rebalance can be expected to
generate a *lot* of sync calls. Threads do still consume non-trivial
resources, and switches between them still involve a trip through the
scheduler, even if they share an address space etc. I just ran a quick
experiment, and ping-ponging between tasks via swapcontext was ~9x as
fast as via pthreads. I didn't measure the effect on memory
consumption, but it's likely to be at least as large as the effect on
execution time.
That is largely the right reason. Pthreads are much more expensive than context based "threads".
Avati