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 + -
显示快捷键?