Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1134)

Side by Side Diff: webrtc/base/sigslot.cc

Issue 2509733003: Rewrite of sigslot that avoids vtables. (Closed)
Patch Set: Attempting to fix Windows issue due to different function pointer sizes. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698