blob: 41537ba10ba56e6635b91c29e64794626ee9e1c2 [file] [log] [blame]
tommi@webrtc.orgfe196992015-02-07 22:35:54 +00001/*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020011#ifndef SYSTEM_WRAPPERS_SOURCE_RW_LOCK_WIN_H_
12#define SYSTEM_WRAPPERS_SOURCE_RW_LOCK_WIN_H_
tommi@webrtc.orgfe196992015-02-07 22:35:54 +000013
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020014#include "system_wrappers/include/rw_lock_wrapper.h"
tommi@webrtc.orgfe196992015-02-07 22:35:54 +000015
16#include <Windows.h>
17
18namespace webrtc {
19
20class RWLockWin : public RWLockWrapper {
21 public:
22 static RWLockWin* Create();
23 ~RWLockWin() {}
24
25 virtual void AcquireLockExclusive();
26 virtual void ReleaseLockExclusive();
27
28 virtual void AcquireLockShared();
29 virtual void ReleaseLockShared();
30
31 private:
32 RWLockWin();
33 static bool LoadModule();
34
35 SRWLOCK lock_;
36};
37
38} // namespace webrtc
39
Mirko Bonadei92ea95e2017-09-15 06:47:31 +020040#endif // SYSTEM_WRAPPERS_SOURCE_RW_LOCK_WIN_H_