Add Baton variants with multiple posters and with a non-blocking waiter
Summary: Added two variants of Baton by adding two Boolean template parameters with defaults that correspond to the original single poster blocking waiter version: - SinglePoster (single poster vs multiple posters). Default true. - Blocking (vs spinning). Default true. The multi-poster baton (SinglePoster = false) can be handed over by multiple concurrent posters, where redundant post()-s are idempotent but if a post() arrives after the baton is reset() then it unblocks the waiter. The nonblocking Baton (Blocking = false) has faster common case post(), by avoiding CAS in the critical path. It does so by disallowing waiter blocking and timed_wait(). Reviewed By: nbronson Differential Revision: D4506728 fbshipit-source-id: e5b65ad93e443fbba22164319c985ebc8424554a
Showing
Please register or sign in to comment