1 // Copyright 2016 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/synchronization/read_write_lock.h" 6 7 #include "base/logging.h" 8 9 namespace base { 10 namespace subtle { 11 ReadWriteLock()12ReadWriteLock::ReadWriteLock() : native_handle_(PTHREAD_RWLOCK_INITIALIZER) {} 13 ~ReadWriteLock()14ReadWriteLock::~ReadWriteLock() { 15 int result = pthread_rwlock_destroy(&native_handle_); 16 DCHECK_EQ(result, 0) << ". " << strerror(result); 17 } 18 ReadAcquire()19void ReadWriteLock::ReadAcquire() { 20 int result = pthread_rwlock_rdlock(&native_handle_); 21 DCHECK_EQ(result, 0) << ". " << strerror(result); 22 } 23 ReadRelease()24void ReadWriteLock::ReadRelease() { 25 int result = pthread_rwlock_unlock(&native_handle_); 26 DCHECK_EQ(result, 0) << ". " << strerror(result); 27 } 28 WriteAcquire()29void ReadWriteLock::WriteAcquire() { 30 int result = pthread_rwlock_wrlock(&native_handle_); 31 DCHECK_EQ(result, 0) << ". " << strerror(result); 32 } 33 WriteRelease()34void ReadWriteLock::WriteRelease() { 35 int result = pthread_rwlock_unlock(&native_handle_); 36 DCHECK_EQ(result, 0) << ". " << strerror(result); 37 } 38 39 } // namespace subtle 40 } // namespace base 41