| // Copyright 2013 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "flutter/fml/platform/posix/shared_mutex_posix.h" |
| |
| #include "flutter/fml/logging.h" |
| |
| namespace fml { |
| |
| SharedMutex* SharedMutex::Create() { |
| return new SharedMutexPosix(); |
| } |
| |
| SharedMutexPosix::SharedMutexPosix() { |
| FML_CHECK(pthread_rwlock_init(&rwlock_, nullptr) == 0); |
| } |
| |
| void SharedMutexPosix::Lock() { |
| pthread_rwlock_wrlock(&rwlock_); |
| } |
| |
| void SharedMutexPosix::LockShared() { |
| pthread_rwlock_rdlock(&rwlock_); |
| } |
| |
| void SharedMutexPosix::Unlock() { |
| pthread_rwlock_unlock(&rwlock_); |
| } |
| |
| void SharedMutexPosix::UnlockShared() { |
| pthread_rwlock_unlock(&rwlock_); |
| } |
| |
| } // namespace fml |