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 控制代碼是一種指向指標的指標。指標...