整理自用 多執行緒之CSingleLock

2021-08-19 01:19:03 字數 952 閱讀 5064

總體而言:

1. csinglelock主要是用於同步多個執行緒對乙個資料類的同時訪問。

2. csinglelock有raii的好處。

csinglelock是對鎖的乙個封裝,它的基本原理如下:(下面給出的是csinglelock的建構函式和析構函式)

csinglelock(lock* plock)

~csinglelock()

由上述基本原理可以看出,使用csinglelock有兩大好處:

1.防止程式設計筆誤,只有lock,沒有unlock。//因為是自動呼叫的析構函式,所以不必擔心程式設計師使用時操作失誤。

2.函式異常退出時,有可能流程走不到unlock處,會導致資源鎖死,而使用csinglelock,則會在函式出棧時,自動呼叫csinglelock析構函式,釋放鎖。

raii(resource acquisition is initialization)是一種利用物件生命週期來控制程式資源(如記憶體、檔案控制代碼、網路連線、互斥量等等)的簡單技術。

raii 的一般做法是這樣的:

1. 在物件構造時獲取資源;

2. 接著控制對資源的訪問使之在物件的生命週期內始終保持有效

3. 最後在物件析構的時候釋放資源。

藉此,我們實際上把管理乙份資源的責任託管給了乙個物件。

這種做法有兩大好處:

1. 不需要顯式地釋放資源。

2. 採用這種方式,物件所需的資源在其生命期內始終保持有效。

因此,csinglelock有raii的好處!!!

使用csinglelock有一大壞處,就是效能上總會有損失的,因為它多了乙個構造與析構的過程.

想要多執行緒同步,建立的物件必然是csyncobject派生類的物件——它是其他四個同步類的基類。

iOS整理 多執行緒之 NSOperation

nsoperation的作用 配合使用nsoperation和nsoperationqueue也能實現多執行緒程式設計 nsoperation和nsoperationqueue實現多執行緒的具體步驟 先將需要執行的操作封裝到乙個nsoperation物件中 然後將nsoperation物件新增到ns...

自用 linux下多執行緒

3 簡單的多執行緒示例 乙個簡單的linux多執行緒示例如下 include include include include void thread function void arg char message hello world int main printf waiting for thre...

多執行緒之執行緒同步

pulse lockobj 表示釋放當前被lock的lockobj,容許其他執行緒呼叫。相當於暫時掛起當前執行緒 wait lockobj 表示等待當前被其他執行緒占用的lockobj。下面的 將會交替執行兩個執行緒 class ticktock console.write tick monitor...