1 // sigslot.h: Signal/Slot classes
2 //
3 // Written by Sarah Thompson (sarah@telergy.com) 2002.
4 //
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
7 // use.
8 
9 #include "webrtc/base/sigslot.h"
10 
11 namespace sigslot {
12 
13 #ifdef _SIGSLOT_HAS_POSIX_THREADS
14 
multi_threaded_global()15 multi_threaded_global::multi_threaded_global() {
16   pthread_mutex_init(get_mutex(), NULL);
17 }
18 
multi_threaded_global(const multi_threaded_global &)19 multi_threaded_global::multi_threaded_global(const multi_threaded_global&) {
20 }
21 
22 multi_threaded_global::~multi_threaded_global() = default;
23 
lock()24 void multi_threaded_global::lock() {
25   pthread_mutex_lock(get_mutex());
26 }
27 
unlock()28 void multi_threaded_global::unlock() {
29   pthread_mutex_unlock(get_mutex());
30 }
31 
multi_threaded_local()32 multi_threaded_local::multi_threaded_local() {
33   pthread_mutex_init(&m_mutex, NULL);
34 }
35 
multi_threaded_local(const multi_threaded_local &)36 multi_threaded_local::multi_threaded_local(const multi_threaded_local&) {
37   pthread_mutex_init(&m_mutex, NULL);
38 }
39 
~multi_threaded_local()40 multi_threaded_local::~multi_threaded_local() {
41   pthread_mutex_destroy(&m_mutex);
42 }
43 
lock()44 void multi_threaded_local::lock() {
45   pthread_mutex_lock(&m_mutex);
46 }
47 
unlock()48 void multi_threaded_local::unlock() {
49   pthread_mutex_unlock(&m_mutex);
50 }
51 
52 #endif  // _SIGSLOT_HAS_POSIX_THREADS
53 
54 };  // namespace sigslot
55