Blocking until the gang's all here - barrier
A barrier is a synchronization device that blocks threads until such time that a predefined number of threads have waited on the same barrier. When a barrier's waiting threads wake up, one is declared leader—discoverable by inspecting the BarrierWaitResult
—but this confers no scheduling advantage. A barrier becomes useful when you wish to delay threads behind an unsafe initialization of some resource—say a C library's internals that have no thread-safety at startup, or have a need to force participating threads to start a critical section at roughly the same time. The latter is the broader category, in your author's experience. When programming with atomic variables, you'll run into situations where a barrier will be useful. Also, consider for a second writings multi-threaded code for low-power devices. There are two strategies possible these days for power management: scaling the CPU to meet requirements, adjusting the runtime of your program...