diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h b/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h index 5a6b045fda7..e4066b72e02 100644 --- a/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h +++ b/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h @@ -1,14 +1,21 @@ #include <atomic> -#include <thread> + +// 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; -static inline void pseudo_barrier_wait(pseudo_barrier_t &barrier) { - --barrier; - while (barrier > 0) - std::this_thread::yield(); -} +#define pseudo_barrier_wait(barrier) \ + do \ + { \ + --(barrier); \ + while ((barrier).load() > 0) \ + ; \ + } while (0) -static inline void pseudo_barrier_init(pseudo_barrier_t &barrier, int count) { - barrier = count; -} +#define pseudo_barrier_init(barrier, count) \ + do \ + { \ + (barrier) = (count); \ + } while (0) |