Can't we just do push and no push(xor pull)? I guess my basic question is: what do we get by doing both push and pull at the same time? Any operation happening in parallel which would make things faster?Can't we factorize the code common Leave and Join code and still use a single thread to do all the action? There's no point in using two threads that run in sequence (unless they do some parallel processing?).
Umm, nope. :) One is a push and one is a pull. Very different.