Botan 3.0.0-alpha0
Crypto and TLS for C&
mutex.h
Go to the documentation of this file.
1/*
2* (C) 2016 Jack Lloyd
3*
4* Botan is released under the Simplified BSD License (see license.txt)
5*/
6
7#ifndef BOTAN_UTIL_MUTEX_H_
8#define BOTAN_UTIL_MUTEX_H_
9
10#include <botan/types.h>
11
12#if defined(BOTAN_TARGET_OS_HAS_THREADS)
13
14#include <mutex>
15
16namespace Botan {
17
18template<typename T> using lock_guard_type = std::lock_guard<T>;
19typedef std::mutex mutex_type;
20typedef std::recursive_mutex recursive_mutex_type;
21
22}
23
24#else
25
26// No threads
27
28namespace Botan {
29
30template<typename Mutex>
32 {
33 public:
34 explicit lock_guard(Mutex& m) : m_mutex(m)
35 { m_mutex.lock(); }
36
37 ~lock_guard() { m_mutex.unlock(); }
38
39 lock_guard(const lock_guard& other) = delete;
40 lock_guard& operator=(const lock_guard& other) = delete;
41 private:
42 Mutex& m_mutex;
43 };
44
46 {
47 public:
48 void lock() {}
49 void unlock() {}
50 };
51
54template<typename T> using lock_guard_type = lock_guard<T>;
55
56}
57
58#endif
59
60#endif
lock_guard(Mutex &m)
Definition: mutex.h:34
lock_guard & operator=(const lock_guard &other)=delete
lock_guard(const lock_guard &other)=delete
void lock()
Definition: mutex.h:48
void unlock()
Definition: mutex.h:49
int(* final)(unsigned char *, CTX *)
Definition: alg_id.cpp:13
lock_guard< T > lock_guard_type
Definition: mutex.h:54
noop_mutex recursive_mutex_type
Definition: mutex.h:53
noop_mutex mutex_type
Definition: mutex.h:52