執行緒同步機制-包裝類
為了充分複用程式碼,將執行緒同步機制分裝成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 執行緒同步機制執行緒
- JS執行機制--同步與非同步JS非同步
- JavaScript執行緒機制與事件機制JavaScript執行緒事件
- Java多執行緒同步工具類之SemaphoreJava執行緒
- Java多執行緒同步工具類之CyclicBarrierJava執行緒
- Java多執行緒同步工具類之CountDownLatchJava執行緒CountDownLatch
- 執行緒鎖 -賣票機制執行緒
- 多執行緒和多執行緒同步執行緒
- Python並行程式設計(二):多執行緒鎖機制利用Lock與RLock實現執行緒同步Python並行行程程式設計執行緒
- 執行緒與同步非同步執行緒非同步
- C#多執行緒(4):程式同步Mutex類C#執行緒Mutex
- 執行緒的同步執行緒
- 執行緒同步方法執行緒
- 理解執行緒同步執行緒
- 深入執行緒同步執行緒
- 執行緒間的協作機制執行緒
- FlutterEngine執行緒管理與DartIsolate機制Flutter執行緒Dart
- 多執行緒之等待通知機制執行緒
- JAVA多執行緒與鎖機制Java執行緒
- 【多執行緒總結(二)-執行緒安全與執行緒同步】執行緒
- 多執行緒,執行緒類三種方式,執行緒排程,執行緒同步,死鎖,執行緒間的通訊,阻塞佇列,wait和sleep區別?執行緒佇列AI
- 多執行緒(2)-執行緒同步互斥鎖Mutex執行緒Mutex
- 非同步/同步,阻塞/非阻塞,單執行緒/多執行緒概念梳理非同步執行緒
- 建立程序,設計訊號量同步機制,實現多執行緒同步 - C語言版執行緒C語言
- java 多執行緒 –同步Java執行緒
- java 多執行緒 --同步Java執行緒
- 執行緒間通訊_等待/通知機制執行緒
- Java多執行緒學習(3)執行緒同步與執行緒通訊Java執行緒
- 一起分析執行緒的狀態及執行緒通訊機制執行緒
- 多執行緒(2)-執行緒同步條件變數執行緒變數
- Java多執行緒之執行緒同步【synchronized、Lock、volatitle】Java執行緒synchronized
- C#多執行緒開發-執行緒同步 02C#執行緒
- js內部事件機制–單執行緒原理JS事件執行緒
- ConcurrentHashMap執行緒安全機制以及原始碼分析HashMap執行緒原始碼
- 簡單案例淺析JS執行緒機制JS執行緒