pthread_mutex_t ThreadCounted::mutex = PTHREAD_MUTEX_INITIALIZER; unsigned int ThreadCounted::threadcount = 1; ThreadCounted::ThreadCounted() { pthread_mutex_lock(&mutex); threadrefs = ThreadCounted::threadcount; pthread_mutex_unlock(&mutex); } ThreadCounted::~ThreadCounted() { } void ThreadCounted::CLONE() { pthread_mutex_lock(&mutex); ThreadCounted::threadcount++; pthread_mutex_unlock(&mutex); } void ThreadCounted::DESTROY() { pthread_mutex_lock(&mutex); if (--threadrefs == 0) { delete this; } pthread_mutex_unlock(&mutex); }