August 01, 1997
A Portable Multithreading Framework
August 1997/A Portable Multithreading Framework/Listing 3
Listing 3: POSIX reference count implementation
////////////////////////////////////////////
// Copyright (c) Panos Kougiouris 1997
////////////////////////////////////////////
#include <kfReferenceCount.h>
#include <assert.h>
CKFReferenceCount::CKFReferenceCount()
{
m_count = 1;
pthread_mutex_init(&m_mutex, NULL);
}
//------------------------------------------
CKFReferenceCount::~CKFReferenceCount()
{
assert(m_count == 0);
pthread_mutex_destroy(&m_mutex);
}
//------------------------------------------
void
CKFReferenceCount::increment()
{
pthread_mutex_lock(&m_mutex);
m_count++;
pthread_mutex_unlock(&m_mutex);
}
//------------------------------------------
void
CKFReferenceCount::decrement()
{
pthread_mutex_lock(&m_mutex);
m_count--;
if (m_count == 0) {
delete this;
} else {
pthread_mutex_unlock(&m_mutex);
}
}
//------------------------------------------
int
CKFReferenceCount::count()
{
int ret;
pthread_mutex_lock(&m_mutex);
ret = m_count;
pthread_mutex_unlock(&m_mutex);
return ret;
}
//End of File
Previous Page |
1
|
2
|
3
|
4
|
5
|
6
Next Page