aboutsummaryrefslogtreecommitdiff
path: root/src/stable/synchroatom.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/stable/synchroatom.h')
-rw-r--r--src/stable/synchroatom.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/stable/synchroatom.h b/src/stable/synchroatom.h
new file mode 100644
index 0000000..fb02054
--- /dev/null
+++ b/src/stable/synchroatom.h
@@ -0,0 +1,63 @@
1/*
2 * Copyright (C) 2007-2011 Xagasoft, All rights reserved.
3 *
4 * This file is part of the libbu++ library and is released under the
5 * terms of the license contained in the file LICENSE.
6 */
7
8#ifndef BU_SYNCHRO_ATOM_H
9#define BU_SYNCHRO_ATOM_H
10
11#include <pthread.h>
12
13#include "bu/mutex.h"
14
15namespace Bu
16{
17 /**
18 * A thread-safe wrapper class.
19 *@ingroup Threading
20 */
21 template <class T>
22 class SynchroAtom
23 {
24 public:
25 /**
26 * Construct an empty queue.
27 */
28 SynchroAtom()
29 {
30 }
31
32 SynchroAtom( const T &src ) :
33 data( src )
34 {
35 }
36
37 ~SynchroAtom()
38 {
39 }
40
41 T get()
42 {
43 mOperate.lock();
44 T ret = data;
45 mOperate.unlock();
46 return ret;
47 }
48
49 void set( const T &val )
50 {
51 mOperate.lock();
52 data = val;
53 mOperate.unlock();
54 }
55
56 private:
57 T data;
58
59 Mutex mOperate; /**< The master mutex, used on all operations. */
60 };
61};
62
63#endif