- rwlock->write_lock();
- x += 1;
- rwlock->write_unlock();
- }
- }
- }
-
- static void ReaderWriterThread() {
- for (int i = 0; i < kRWPassCount; i++) {
- for (int j = 0; j < kRWPassCount; j++) {
- if (rand(100) < kWriterPercentage) {
- if (rwlock->read_can_lock()) {
- if (!rwlock->read_trylock()) {
- rwlock->read_lock();
- }
- sum += x;
- rwlock->read_unlock();
- } else {
- rwlock->read_lock();
- sum += x;
- rwlock->read_unlock();
- }
- } else {
- if (rwlock->write_can_lock()) {
- if (!rwlock->write_trylock()) {
- rwlock->write_lock();
- }
- x += 1;
- rwlock->write_unlock();
- } else {