OLD | NEW |
1 // sigslot.h: Signal/Slot classes | 1 // sigslot.h: Signal/Slot classes |
2 // | 2 // |
3 // Written by Sarah Thompson (sarah@telergy.com) 2002. | 3 // Written by Sarah Thompson (sarah@telergy.com) 2002. |
4 // | 4 // |
5 // License: Public domain. You are free to use this code however you like, with | 5 // License: Public domain. You are free to use this code however you like, with |
6 // the proviso that the author takes on no responsibility or liability for any | 6 // the proviso that the author takes on no responsibility or liability for any |
7 // use. | 7 // use. |
8 | 8 |
9 #include "webrtc/base/sigslot.h" | 9 #include "webrtc/base/sigslot.h" |
10 | 10 |
11 namespace sigslot { | 11 namespace sigslot { |
12 | 12 |
13 #ifdef _SIGSLOT_HAS_POSIX_THREADS | 13 #ifdef _SIGSLOT_HAS_POSIX_THREADS |
14 | 14 |
15 multi_threaded_global::multi_threaded_global() { | 15 pthread_mutex_t* multi_threaded_global::get_mutex() { |
16 pthread_mutex_init(get_mutex(), NULL); | 16 static pthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER; |
17 } | 17 return &g_mutex; |
18 | |
19 multi_threaded_global::multi_threaded_global(const multi_threaded_global&) { | |
20 } | |
21 | |
22 multi_threaded_global::~multi_threaded_global() = default; | |
23 | |
24 void multi_threaded_global::lock() { | |
25 pthread_mutex_lock(get_mutex()); | |
26 } | |
27 | |
28 void multi_threaded_global::unlock() { | |
29 pthread_mutex_unlock(get_mutex()); | |
30 } | |
31 | |
32 multi_threaded_local::multi_threaded_local() { | |
33 pthread_mutex_init(&m_mutex, NULL); | |
34 } | |
35 | |
36 multi_threaded_local::multi_threaded_local(const multi_threaded_local&) { | |
37 pthread_mutex_init(&m_mutex, NULL); | |
38 } | |
39 | |
40 multi_threaded_local::~multi_threaded_local() { | |
41 pthread_mutex_destroy(&m_mutex); | |
42 } | |
43 | |
44 void multi_threaded_local::lock() { | |
45 pthread_mutex_lock(&m_mutex); | |
46 } | |
47 | |
48 void multi_threaded_local::unlock() { | |
49 pthread_mutex_unlock(&m_mutex); | |
50 } | 18 } |
51 | 19 |
52 #endif // _SIGSLOT_HAS_POSIX_THREADS | 20 #endif // _SIGSLOT_HAS_POSIX_THREADS |
53 | 21 |
54 }; // namespace sigslot | 22 } // namespace sigslot |
OLD | NEW |