FREE Subscription to Dr. Dobb’s Digest: Same Great Content, New Digital Edition
Site Archive (Complete)
C++
Email
Print
Reprint

add to:
Del.icio.us
Digg
Google
Furl
Slashdot
Y! MyWeb
Blink
August 01, 1997

A Portable Multithreading Framework

(Page 4 of 6)

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
RELATED ARTICLES
No Related Articles
TOP 5 ARTICLES
No Top Articles.



MICROSITES
FEATURED TOPIC

ADDITIONAL TOPICS

INFO-LINK