diff options
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h b/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h index 592000ddea4..8a543344028 100644 --- a/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h +++ b/lldb/packages/Python/lldbsuite/test/make/pseudo_barrier.h @@ -1,20 +1,15 @@ #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. +#include <thread> 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) +static inline void pseudo_barrier_wait(pseudo_barrier_t &barrier) { + --barrier; + while (barrier > 0) + std::this_thread::yield(); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); +} + +static inline void pseudo_barrier_init(pseudo_barrier_t &barrier, int count) { + barrier = count; +} |