diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h b/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h new file mode 100644 index 00000000000..592000ddea4 --- /dev/null +++ b/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h @@ -0,0 +1,20 @@ +#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) |