* Thread updates and cleanup (m_locked, MUTEX_UNLOCKED added)

* Updated the documentation


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@94 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Guilhem Lavaux
1998-06-14 15:28:28 +00:00
parent ee4f8c2af9
commit b89156b5db
11 changed files with 134 additions and 88 deletions

View File

@@ -46,34 +46,44 @@ public:
wxMutex::wxMutex()
{
m_locked = 0;
p_internal = new wxMutexInternal;
init_lock(&(p_internal->p_mutex));
}
wxMutex::~wxMutex()
{
if (m_locked > 0)
wxDebugMsg("wxMutex warning: freeing a locked mutex (%d locks)\n",
m_locked);
delete p_internal;
}
wxMutex::MutexError wxMutex::Lock()
wxMutexError wxMutex::Lock()
{
spin_lock(&(p_internal->p_mutex));
return NO_ERROR;
m_locked++;
return MUTEX_NO_ERROR;
}
wxMutex::MutexError wxMutex::TryLock()
wxMutexError wxMutex::TryLock()
{
if (acquire_lock(&(p_internal->p_mutex)) != 0)
return BUSY;
return NO_ERROR;
return MUTEX_BUSY;
m_locked++;
return MUTEX_NO_ERROR;
}
wxMutex::MutexError wxMutex::Unlock()
wxMutexError wxMutex::Unlock()
{
if (m_locked == 0)
return MUTEX_UNLOCKED;
release_lock(&(p_internal->p_mutex));
return NO_ERROR;
m_locked--;
return MUTEX_NO_ERROR;
}
// GLH: Don't now how it works on SGI. Wolfram ?
// GL: Don't know how it works on SGI. Wolfram ?
wxCondition::wxCondition() {}
wxCondition::~wxCondition() {}
@@ -116,16 +126,16 @@ void wxThread::Exit(void* status)
_exit(0);
}
wxThread::ThreadError wxThread::Create()
wxThreadError wxThread::Create()
{
if (p_internal->state != STATE_IDLE)
return RUNNING;
return THREAD_RUNNING;
p_internal->state = STATE_RUNNING;
if (sproc(p_internal->SprocStart, PR_SALL, this) < 0) {
p_internal->state = STATE_IDLE;
return NO_RESOURCE;
return THREAD_NO_RESOURCE;
}
return NO_ERROR;
return THREAD_NO_ERROR;
}
void wxThread::Destroy()