diff options
author | Robin Gareus <robin@gareus.org> | 2015-12-02 16:09:51 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-12-02 16:09:51 +0100 |
commit | 15c958e32fe65cee077672439c1c51d071c853e8 (patch) | |
tree | c56a2ff585d3364a04fd1f601ef3bd7306c9d459 | |
parent | f5278f60d3e58f9f7680fae18c442b4d7862c4ae (diff) |
consolidate semaphore implementation (part three)
-rw-r--r-- | libs/pbd/glib_semaphore.cc | 68 | ||||
-rw-r--r-- | libs/pbd/pbd/glib_semaphore.h | 57 | ||||
-rw-r--r-- | libs/pbd/wscript | 1 |
3 files changed, 0 insertions, 126 deletions
diff --git a/libs/pbd/glib_semaphore.cc b/libs/pbd/glib_semaphore.cc deleted file mode 100644 index 7565e0c069..0000000000 --- a/libs/pbd/glib_semaphore.cc +++ /dev/null @@ -1,68 +0,0 @@ -/* - Copyright (C) 2010 Tim Mayberry - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#include "pbd/glib_semaphore.h" - -namespace PBD { - -GlibSemaphore::GlibSemaphore (gint initial_val) - : - m_counter(initial_val) -{ } - -void -GlibSemaphore::wait () -{ - Glib::Threads::Mutex::Lock guard (m_mutex); - - while (m_counter.get() < 1) { - m_cond.wait(m_mutex); - } - - // this shouldn't need to be inside the lock - --m_counter; -} - -bool -GlibSemaphore::try_wait () -{ - if (!m_mutex.trylock()) - { - return false; - } - // lock successful - while (m_counter.get() < 1) { - m_cond.wait(m_mutex); - } - - // the order of these should not matter - --m_counter; - m_mutex.unlock(); - return true; -} - -void -GlibSemaphore::post () -{ - // atomic, no locking required - ++m_counter; - m_cond.signal(); -} - -} // namespace PBD diff --git a/libs/pbd/pbd/glib_semaphore.h b/libs/pbd/pbd/glib_semaphore.h deleted file mode 100644 index 7f96120d7d..0000000000 --- a/libs/pbd/pbd/glib_semaphore.h +++ /dev/null @@ -1,57 +0,0 @@ -/* - Copyright (C) 2010 Tim Mayberry - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - -#ifndef PBD_GLIB_SEMAPHORE_H -#define PBD_GLIB_SEMAPHORE_H - -#include <glibmm/threads.h> - -#include "pbd/libpbd_visibility.h" -#include "atomic_counter.h" - -namespace PBD { - -class LIBPBD_API GlibSemaphore -{ - - // prevent copying and assignment - GlibSemaphore(const GlibSemaphore& sema); - GlibSemaphore& operator= (const GlibSemaphore& sema); - -public: - - GlibSemaphore (gint initial_val = 1); - - void wait (); - - bool try_wait (); - - void post (); - -private: - - atomic_counter m_counter; - Glib::Threads::Cond m_cond; - Glib::Threads::Mutex m_mutex; - -}; - -} // namespace PBD - -#endif // PBD_SEMAPHORE_H diff --git a/libs/pbd/wscript b/libs/pbd/wscript index 00cc6634eb..0d52004432 100644 --- a/libs/pbd/wscript +++ b/libs/pbd/wscript @@ -50,7 +50,6 @@ libpbd_sources = [ 'ffs.cc', 'file_utils.cc', 'fpu.cc', - 'glib_semaphore.cc', 'id.cc', 'locale_guard.cc', 'localtime_r.cc', |