diff options
Diffstat (limited to 'gnu/llvm/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h')
-rw-r--r-- | gnu/llvm/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/gnu/llvm/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h b/gnu/llvm/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h new file mode 100644 index 00000000000..e4066b72e02 --- /dev/null +++ b/gnu/llvm/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h @@ -0,0 +1,21 @@ +#include <atomic> + +// Note that although hogging the CPU while waiting for a variable to change +// would be terrible in production code, it's great for testing since it avoids +// a lot of messy context switching to get multiple threads synchronized. + +typedef std::atomic<int> pseudo_barrier_t; + +#define pseudo_barrier_wait(barrier) \ + do \ + { \ + --(barrier); \ + while ((barrier).load() > 0) \ + ; \ + } while (0) + +#define pseudo_barrier_init(barrier, count) \ + do \ + { \ + (barrier) = (count); \ + } while (0) |