Joedb
10.5.0
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
src
joedb
Thread_Safe.h
Go to the documentation of this file.
1
#ifndef joedb_Thread_Safe_declared
2
#define joedb_Thread_Safe_declared
3
4
#include <mutex>
5
#include <utility>
6
7
namespace
joedb
8
{
9
template
<
typename
T>
class
Lock
;
10
11
template
<
typename
T>
class
Thread_Safe
12
{
13
friend
class
Lock
<T>;
14
15
private
:
16
std::mutex mutex;
17
T t;
18
19
public
:
20
template
<
class
...
Arguments
>
Thread_Safe
(
Arguments
&&... a):
21
t(
std
::forward<
Arguments
>(a)...)
22
{
23
}
24
};
25
26
template
<
typename
T>
class
Lock
27
{
28
private
:
29
std::unique_lock<std::mutex> lock;
30
T &t;
31
32
public
:
33
Lock
(
Thread_Safe<T>
&t): lock(t.mutex), t(t.t)
34
{
35
}
36
37
operator
std::unique_lock<std::mutex> &() {
return
lock;}
38
39
auto
*
operator->
()
const
{
return
&t;}
40
auto
*
operator->
() {
return
&t;}
41
auto
&
operator*
()
const
{
return
t;}
42
auto
&
operator*
() {
return
t;}
43
};
44
}
45
46
#endif
joedb::Arguments
Class for conveniently parsing command-line arguments.
Definition
Arguments.h:16
joedb::Lock
Definition
Thread_Safe.h:27
joedb::Lock::operator*
auto & operator*() const
Definition
Thread_Safe.h:41
joedb::Lock::Lock
Lock(Thread_Safe< T > &t)
Definition
Thread_Safe.h:33
joedb::Lock::operator*
auto & operator*()
Definition
Thread_Safe.h:42
joedb::Lock::operator->
auto * operator->() const
Definition
Thread_Safe.h:39
joedb::Lock::operator->
auto * operator->()
Definition
Thread_Safe.h:40
joedb::Thread_Safe
Definition
Thread_Safe.h:12
joedb::Thread_Safe::Thread_Safe
Thread_Safe(Arguments &&... a)
Definition
Thread_Safe.h:20
joedb
Definition
Server.cpp:10
std
Definition
ids.h:50
Generated by
1.15.0