size_t numThreads,
bool useSeparateLocks) {
char padding1[64];
+ (void)padding1;
Lock globalLock;
int valueProtectedByLock = 10;
char padding2[64];
+ (void)padding2;
Atom<bool> go(false);
Atom<bool>* goPtr = &go; // workaround for clang bug
vector<thread> threads(numThreads);
double writeFraction,
bool useSeparateLocks) {
char padding1[64];
+ (void)padding1;
Lock globalLock;
int valueProtectedByLock = 0;
char padding2[64];
+ (void)padding2;
Atom<bool> go(false);
Atom<bool>* goPtr = &go; // workaround for clang bug
vector<thread> threads(numThreads);
long randVal;
lrand48_r(&buffer, &randVal);
bool writeOp = randVal < writeThreshold;
- SharedMutexToken token;
if (writeOp) {
locker.lock(lock);
if (!useSeparateLocks) {
template <typename Lock, template <typename> class Atom = atomic>
static void runPingPong(size_t numRounds, size_t burnCount) {
char padding1[56];
+ (void)padding1;
pair<Lock, char[56]> locks[3];
char padding2[56];
+ (void)padding2;
Atom<int> avail(0);
auto availPtr = &avail; // workaround for clang crash