}
static void StealerThread(int index) {
- while (!terminate_stealer.load(memory_order_relaxed)) {
+ while (!terminate_stealer.load(memory_order_acquire)) {
while (true) {
int res = deque->steal();
if (res != EMPTY && res != ABORT) {
MainThread(s_nDequeStealerThreadCount, i);
}
- terminate_stealer.store(1, memory_order_relaxed);
+ terminate_stealer.store(1, memory_order_release);
for (ullong i = 0; i < s_nDequeStealerThreadCount; i++) {
threads[i].join();
}
typedef cds::sync::reentrant_spin64 Reentrant64;
static size_t s_nSpinLockThreadCount = 4;
static size_t s_nSpinLockPassCount = 2500000000;
+static size_t s_nReentrantLockPassCount = 2500000000;
static size_t s_nTicketLockPassCount = 4000000;
#define TASK(lock_type, lock_ptr, pass_cnt) \
cds_test::config const &cfg = get_config("Misc");
GetConfig(SpinLockThreadCount);
GetConfig(SpinLockPassCount);
+ GetConfig(ReentrantLockPassCount);
GetConfig(TicketLockPassCount);
}
TASK(TicketLock, ticket_mutex, s_nTicketLockPassCount)
TASK(SpinLock, spin_mutex, s_nSpinLockPassCount)
- TASK(Reentrant32, reentrant_mutex32, s_nSpinLockPassCount)
- TASK(Reentrant64, reentrant_mutex64, s_nSpinLockPassCount)
+ TASK(Reentrant32, reentrant_mutex32, s_nReentrantLockPassCount)
+ TASK(Reentrant64, reentrant_mutex64, s_nReentrantLockPassCount)
};
size_t SpinLockTest::x;
LOCK_TEST(TicketLock, ticket_mutex, s_nTicketLockPassCount)
LOCK_TEST(SpinLock, spin_mutex, s_nSpinLockPassCount)
-LOCK_TEST(Reentrant32, reentrant_mutex32, s_nSpinLockPassCount)
-LOCK_TEST(Reentrant64, reentrant_mutex64, s_nSpinLockPassCount)
+LOCK_TEST(Reentrant32, reentrant_mutex32, s_nReentrantLockPassCount)
+LOCK_TEST(Reentrant64, reentrant_mutex64, s_nReentrantLockPassCount)
} // namespace