14#include "arccore/concurrency/GlibAdapter.h"
26#define ARCCORE_GLIB_HAS_NEW_THREAD
45 Impl() ARCCORE_NOEXCEPT
48 m_mutex = &m_mutex_instance;
49 g_mutex_init(m_mutex);
53 g_mutex_clear(m_mutex);
58 GMutex* value()
const {
return m_mutex; }
59 void lock() { g_mutex_lock(m_mutex); }
60 void unlock() { g_mutex_unlock(m_mutex); }
64 GMutex m_mutex_instance;
72GlibMutex() ARCCORE_NOEXCEPT
87void GlibMutex::unlock()
97GlibMutex::Lock::~Lock()
106 GPrivate null_gprivate = G_PRIVATE_INIT(
nullptr);
117 Impl() ARCCORE_NOEXCEPT
120 m_private_instance = null_gprivate;
121 m_private = &m_private_instance;
129 void setValue(
void* value)
131 g_private_set(m_private, value);
135 return g_private_get(m_private);
140 GPrivate m_private_instance;
159void GlibPrivate::create()
163void GlibPrivate::setValue(
void* value)
165 m_p->setValue(value);
167void* GlibPrivate::getValue()
169 return m_p->getValue();
182 m_cond = &m_cond_instance;
187 g_cond_clear(m_cond);
192 void broadcast() { g_cond_broadcast(m_cond); }
193 void wait(
GlibMutex::Impl* mutex) { g_cond_wait(m_cond, mutex->value()); }
197 GCond m_cond_instance;
205: m_p(new GlibCond::
Impl())
211void GlibCond::broadcast()
215void GlibCond::wait(GlibMutex* mutex)
217 m_p->wait(mutex->m_p);
Encapsulates a GMutex from glib.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --