OpenThreads執行緒庫

2021-06-25 14:03:31 字數 1022 閱讀 8311

openthreads與pthread不同點在於,他是根據物件導向開發的。

傳統的:

1. 互斥量openthreads::mutex類

當執行緒使用某一資源時,先使用互斥量加鎖。由於採用了物件導向機制將互斥量抽象為乙個類,所以不像pthread函式那樣傳入個引數。mutext有兩個函式:

int mutex::lock()

int mutex::unlock()

2. 條件量openthreads::condition類

與mutex配合使用,一直阻塞直到mutex解鎖。

int wait(mutex* mutex)                         // 阻塞直到mutex解鎖

int signal()// 喚醒此執行緒

int broadcast()// 喚醒所有被阻塞的執行緒

3. 阻塞器類openthreads::block類

阻塞/釋放當前執行緒。

bool block();

void release();

新看到的:

4. 計數阻塞器openthreads::blockcount類

與block相似的是也是通過block阻塞執行緒,通過release釋放執行緒。區別是,blockcount設定了乙個int count。每當blockcount::completed被執行一次,count減1,減到0時,被阻塞執行緒自動釋放。(注意此時被阻塞執行緒是阻塞的,故而能呼叫completed的一定是別的實體)

bool block();

void release();

void completed()

5. 柵欄類barrier類

barrier(int numthreads);

bool block(unsigned int)// 引數可以重新設定強度

所謂柵欄實際上就是乙個int numthreads。每個執行barrier::block的執行緒將阻塞,直到被阻塞的執行緒的個數達到了numthreads,就釋放所有的執行緒,藉以達到了同步的目的。這個類的名字很形象。

OpenThreads執行緒管理

openscenegraph中線程 openthreads 的作用多種多樣,涉及到訊號量機制,同步非同步鎖等多種知識點。openthreads threads 建立執行緒,類似於windows中的 beginthread,mutex 建立互斥,類似於windows中的createmutex,用於針對...

OpenThreads庫的使用 Mutex

mutex,叫互斥鎖。在程式設計中,引入了物件互斥鎖的概念,來保證共享資料操作的完整性。每個物件都對應於乙個可稱為 互斥鎖 的標記,這個標記用來保證在任一時刻,只能有乙個執行緒訪問該物件。因為執行緒存在併發性,併發容易導致問題。舉個例子 a,b兩個售票員,看到最後還有一張車票。同時,正好有c,d兩個...

Windows執行緒庫

win32 api是windows作業系統為核心以及應用程式之間提供的介面,將核心提供的功能進行函式封裝,應用程式通過呼叫相關的函式獲得相應的系統功能。mfc是微軟基礎函式類庫,由微軟提供的,用類庫的方式將win32 api進行封裝,以類的方式開發者。handle 控制代碼是一種指向指標的指標。指標...