aboutsummaryrefslogtreecommitdiff
path: root/src/synchroatom.h
diff options
context:
space:
mode:
authorMike Buland <eichlan@xagasoft.com>2011-10-27 04:44:46 +0000
committerMike Buland <eichlan@xagasoft.com>2011-10-27 04:44:46 +0000
commit9906ffe3c54875133448134c09ec12a0949d48cd (patch)
tree0542fef3d27e796700b87b44394a3ad31dd5b852 /src/synchroatom.h
parent411f240da34bab53cd18aa8b7ba09834ede49b1c (diff)
parent029b5d159023f4dad607359dbfaa2479e21fe9e5 (diff)
downloadlibbu++-9906ffe3c54875133448134c09ec12a0949d48cd.tar.gz
libbu++-9906ffe3c54875133448134c09ec12a0949d48cd.tar.bz2
libbu++-9906ffe3c54875133448134c09ec12a0949d48cd.tar.xz
libbu++-9906ffe3c54875133448134c09ec12a0949d48cd.zip
Reorg'd! I merged in the release-fixup branch and fixed all random warnings.
I also cleaned up the build script, the symlink generation is faster and looks nicer, there's one think left to fix there, but it's not too bad.
Diffstat (limited to 'src/synchroatom.h')
-rw-r--r--src/synchroatom.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/synchroatom.h b/src/synchroatom.h
new file mode 100644
index 0000000..fb02054
--- /dev/null
+++ b/src/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