| // 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 |