condition.cpp

来自「linux下的线程池,其中使用了条件变量,互斥锁等保持线程同步的变量!」· C++ 代码 · 共 67 行

CPP
67
字号
#include "condition.h"
#include "mutex.h"

Condition::Condition(Mutex&mutex)
:mutex_(mutex)
{

#ifndef WIN32
	pthread_cond_init(&cond_,NULL);
#endif
}

Condition::~Condition()
{
#ifndef WIN32
	pthread_cond_destroy(&cond_);
#endif

}

bool Condition::signal()
{
#ifdef WIN32
	return true;
#else
	MutexApply ma(mutex_);
	return pthread_cond_signal(&cond_) == 0;
#endif

}

bool Condition::broadcast()
{
#ifdef WIN32
	return true;
#else
	MutexApply ma(mutex_);
	return pthread_cond_broadcast(&cond_) == 0;
#endif

}


bool Condition::wait()
{
#ifdef WIN32
	return true;
#else
	MutexApply ma(mutex_);
	pthread_mutex_t mutex = mutex_;
	return pthread_cond_wait(&cond_,&mutex);
#endif

}

int Condition::timedwait(const struct timespec* pabstime)
{
#ifdef WIN32
	return 0;
#else
	MutexApply ma(mutex_);
	pthread_mutex_t mutex = mutex_;
	return pthread_cond_timedwait(&cond_,&mutex,pabstime);
#endif

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?