176 lines
4.0 KiB
C++
176 lines
4.0 KiB
C++
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// Name: include/wx/thrimpl.cpp
|
||
|
// Purpose: common part of wxThread Implementations
|
||
|
// Author: Vadim Zeitlin
|
||
|
// Modified by:
|
||
|
// Created: 04.06.02 (extracted from src/*/thread.cpp files)
|
||
|
// RCS-ID: $Id$
|
||
|
// Copyright: (c) Vadim Zeitlin (2002)
|
||
|
// Licence: wxWindows licence
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// this file is supposed to be included only by the various thread.cpp
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
// wxMutex
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
wxMutex::wxMutex(wxMutexType mutexType)
|
||
|
{
|
||
|
m_internal = new wxMutexInternal(mutexType);
|
||
|
|
||
|
if ( !m_internal->IsOk() )
|
||
|
{
|
||
|
delete m_internal;
|
||
|
m_internal = NULL;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
wxMutex::~wxMutex()
|
||
|
{
|
||
|
delete m_internal;
|
||
|
}
|
||
|
|
||
|
bool wxMutex::IsOk() const
|
||
|
{
|
||
|
return m_internal != NULL;
|
||
|
}
|
||
|
|
||
|
wxMutexError wxMutex::Lock()
|
||
|
{
|
||
|
wxCHECK_MSG( m_internal, wxMUTEX_INVALID,
|
||
|
_T("wxMutex::Lock(): not initialized") );
|
||
|
|
||
|
return m_internal->Lock();
|
||
|
}
|
||
|
|
||
|
wxMutexError wxMutex::TryLock()
|
||
|
{
|
||
|
wxCHECK_MSG( m_internal, wxMUTEX_INVALID,
|
||
|
_T("wxMutex::TryLock(): not initialized") );
|
||
|
|
||
|
return m_internal->TryLock();
|
||
|
}
|
||
|
|
||
|
wxMutexError wxMutex::Unlock()
|
||
|
{
|
||
|
wxCHECK_MSG( m_internal, wxMUTEX_INVALID,
|
||
|
_T("wxMutex::Unlock(): not initialized") );
|
||
|
|
||
|
return m_internal->Unlock();
|
||
|
}
|
||
|
|
||
|
// ----------------------------------------------------------------------------
|
||
|
// wxCondition
|
||
|
// ----------------------------------------------------------------------------
|
||
|
|
||
|
wxCondition::wxCondition(wxMutex& mutex)
|
||
|
{
|
||
|
m_internal = new wxConditionInternal(mutex);
|
||
|
|
||
|
if ( !m_internal->IsOk() )
|
||
|
{
|
||
|
delete m_internal;
|
||
|
m_internal = NULL;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
wxCondition::~wxCondition()
|
||
|
{
|
||
|
delete m_internal;
|
||
|
}
|
||
|
|
||
|
bool wxCondition::IsOk() const
|
||
|
{
|
||
|
return m_internal != NULL;
|
||
|
}
|
||
|
|
||
|
wxCondError wxCondition::Wait()
|
||
|
{
|
||
|
wxCHECK_MSG( m_internal, wxCOND_INVALID,
|
||
|
_T("wxCondition::Wait(): not initialized") );
|
||
|
|
||
|
return m_internal->Wait();
|
||
|
}
|
||
|
|
||
|
wxCondError wxCondition::WaitTimeout(unsigned long milliseconds)
|
||
|
{
|
||
|
wxCHECK_MSG( m_internal, wxCOND_INVALID,
|
||
|
_T("wxCondition::Wait(): not initialized") );
|
||
|
|
||
|
return m_internal->WaitTimeout(milliseconds);
|
||
|
}
|
||
|
|
||
|
wxCondError wxCondition::Signal()
|
||
|
{
|
||
|
wxCHECK_MSG( m_internal, wxCOND_INVALID,
|
||
|
_T("wxCondition::Signal(): not initialized") );
|
||
|
|
||
|
return m_internal->Signal();
|
||
|
}
|
||
|
|
||
|
wxCondError wxCondition::Broadcast()
|
||
|
{
|
||
|
wxCHECK_MSG( m_internal, wxCOND_INVALID,
|
||
|
_T("wxCondition::Broadcast(): not initialized") );
|
||
|
|
||
|
return m_internal->Broadcast();
|
||
|
}
|
||
|
|
||
|
// --------------------------------------------------------------------------
|
||
|
// wxSemaphore
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
wxSemaphore::wxSemaphore(int initialcount, int maxcount)
|
||
|
{
|
||
|
m_internal = new wxSemaphoreInternal( initialcount, maxcount );
|
||
|
if ( !m_internal->IsOk() )
|
||
|
{
|
||
|
delete m_internal;
|
||
|
m_internal = NULL;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
wxSemaphore::~wxSemaphore()
|
||
|
{
|
||
|
delete m_internal;
|
||
|
}
|
||
|
|
||
|
bool wxSemaphore::IsOk() const
|
||
|
{
|
||
|
return m_internal != NULL;
|
||
|
}
|
||
|
|
||
|
wxSemaError wxSemaphore::Wait()
|
||
|
{
|
||
|
wxCHECK_MSG( m_internal, wxSEMA_INVALID,
|
||
|
_T("wxSemaphore::Wait(): not initialized") );
|
||
|
|
||
|
return m_internal->Wait();
|
||
|
}
|
||
|
|
||
|
wxSemaError wxSemaphore::TryWait()
|
||
|
{
|
||
|
wxCHECK_MSG( m_internal, wxSEMA_INVALID,
|
||
|
_T("wxSemaphore::TryWait(): not initialized") );
|
||
|
|
||
|
return m_internal->TryWait();
|
||
|
}
|
||
|
|
||
|
wxSemaError wxSemaphore::WaitTimeout(unsigned long milliseconds)
|
||
|
{
|
||
|
wxCHECK_MSG( m_internal, wxSEMA_INVALID,
|
||
|
_T("wxSemaphore::WaitTimeout(): not initialized") );
|
||
|
|
||
|
return m_internal->WaitTimeout(milliseconds);
|
||
|
}
|
||
|
|
||
|
wxSemaError wxSemaphore::Post()
|
||
|
{
|
||
|
wxCHECK_MSG( m_internal, wxSEMA_INVALID,
|
||
|
_T("wxSemaphore::Post(): not initialized") );
|
||
|
|
||
|
return m_internal->Post();
|
||
|
}
|
||
|
|