執行緒同步機制-包裝類
為了充分複用程式碼,將執行緒同步機制分裝成3個類。
#ifndef LOCK_H
#define LOCK_H
#include
#include<pthread.h>
#include<semaphore.h>
class sem
{
public:
/建立並初始化訊號量/
sem()
{
if(sem_init(&m_sem, 0, 0) != 0)
{
/建構函式沒有返回值,可以通過丟擲異常來進行報錯誤/
throw std::exception();
}
}
/銷燬訊號量/
~sem()
{
sem_destroy(&m_sem);
}
/等待訊號量/
bool wait()
{
return sem_wait(&m_sem) == 0;
}
/*增加訊號量*/
bool post()
{
return sem_post(&m_sem) == 0;
}
private:
sem_t m_sem;
};
class locker
{
public:
locker()
{
if(pthread_mutex_init(&m_mutex, NULL) != 0)
{
throw std::exception();
}
}
~locker()
{
pthread_mutex_destroy(&m_mutex);
}
bool lock()
{
return pthread_mutex_lock(&m_mutex) == 0;
}
bool unlock()
{
return pthread_mutex_unlock(&m_mutex) == 0;
}
private:
pthread_mutex_t m_mutex;
};
class cond
{
public:
cond()
{
if(pthread_mutex_init(&m_mutex, NULL) != 0)
{
throw std::exception();
}
if(pthread_cond_init(&m_cond, NULL) != 0)
{
pthread_mutex_destroy(&m_mutex);
throw std::exception();
}
}
~cond()
{
pthread_mutex_destroy(&m_mutex);
pthread_cond_destroy(&m_cond);
}
bool wait()
{
int ret = 0;
pthread_mutex_lock(&m_mutex);
ret = pthread_cond_wait(&m_cond, &m_mutex);
pthread_mutex_unlock(&m_mutex);
return ret ==0;
}
//喚醒等待條件變數的執行緒
bool signal()
{
return pthread_cond_signal(&m_cond) == 0;
}
private:
pthread_mutex_t m_mutex;
pthread_cond_t m_cond;
};
#endif
相關文章
- 執行緒同步機制執行緒
- java synchronize - 執行緒同步機制Java執行緒
- 分析.Net裡執行緒同步機制執行緒
- 深入理解 OpenMP 執行緒同步機制執行緒
- JavaScript執行緒機制與事件機制JavaScript執行緒事件
- JS執行機制--同步與非同步JS非同步
- c#執行緒-執行緒同步C#執行緒
- 執行緒同步及執行緒鎖執行緒
- 執行緒同步執行緒
- 執行緒鎖 -賣票機制執行緒
- quartz的執行緒池機制quartz執行緒
- Java多執行緒同步工具類之SemaphoreJava執行緒
- Java多執行緒同步工具類之CountDownLatchJava執行緒CountDownLatch
- Java多執行緒同步工具類之CyclicBarrierJava執行緒
- CountDownLatch 多執行緒同步輔助類用法CountDownLatch執行緒
- 多執行緒和多執行緒同步執行緒
- java執行緒學習5——執行緒同步之同步方法Java執行緒
- 多執行緒之等待通知機制執行緒
- JAVA多執行緒與鎖機制Java執行緒
- 執行緒間的協作機制執行緒
- FlutterEngine執行緒管理與DartIsolate機制Flutter執行緒Dart
- C#多執行緒(4):程式同步Mutex類C#執行緒Mutex
- 執行緒與同步非同步執行緒非同步
- 執行緒的同步執行緒
- 理解執行緒同步執行緒
- 深入執行緒同步執行緒
- Java—執行緒同步Java執行緒
- 多執行緒同步執行緒
- .net執行緒同步執行緒
- 執行緒同步方法執行緒
- Python並行程式設計(二):多執行緒鎖機制利用Lock與RLock實現執行緒同步Python並行行程程式設計執行緒
- 第三方包及非同步執行緒非同步執行緒
- Java執行緒:執行緒的同步與鎖Java執行緒
- 【多執行緒總結(二)-執行緒安全與執行緒同步】執行緒
- 4、Linux多執行緒,執行緒同步(2)Linux執行緒
- 多執行緒(2)-執行緒同步互斥鎖Mutex執行緒Mutex
- 非同步/同步,阻塞/非阻塞,單執行緒/多執行緒概念梳理非同步執行緒
- RxJava(RxAndroid)執行緒切換機制RxJavaAndroid執行緒