diff options
Diffstat (limited to 'benchmarks/pthread_benchmark.cpp')
-rw-r--r-- | benchmarks/pthread_benchmark.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/benchmarks/pthread_benchmark.cpp b/benchmarks/pthread_benchmark.cpp index c010dd2..11db56d 100644 --- a/benchmarks/pthread_benchmark.cpp +++ b/benchmarks/pthread_benchmark.cpp @@ -105,3 +105,35 @@ static void BM_pthread_mutex_lock_RECURSIVE(int iters) { StopBenchmarkTiming(); } BENCHMARK(BM_pthread_mutex_lock_RECURSIVE); + +static void BM_pthread_rw_lock_read(int iters) { + StopBenchmarkTiming(); + pthread_rwlock_t lock; + pthread_rwlock_init(&lock, NULL); + StartBenchmarkTiming(); + + for (int i = 0; i < iters; ++i) { + pthread_rwlock_rdlock(&lock); + pthread_rwlock_unlock(&lock); + } + + StopBenchmarkTiming(); + pthread_rwlock_destroy(&lock); +} +BENCHMARK(BM_pthread_rw_lock_read); + +static void BM_pthread_rw_lock_write(int iters) { + StopBenchmarkTiming(); + pthread_rwlock_t lock; + pthread_rwlock_init(&lock, NULL); + StartBenchmarkTiming(); + + for (int i = 0; i < iters; ++i) { + pthread_rwlock_wrlock(&lock); + pthread_rwlock_unlock(&lock); + } + + StopBenchmarkTiming(); + pthread_rwlock_destroy(&lock); +} +BENCHMARK(BM_pthread_rw_lock_write); |