C 多執行緒 巢狀鎖

2021-10-02 02:08:45 字數 784 閱讀 2313

巢狀鎖這個概念,主要是為了根據程式設計中的一種情形引申出來的。什麼情況呢,我們可以具體說明一下。假設你在處理乙個公共函式的時候,因為中間涉及公共資料,所以你加了乙個鎖。但是,有一點比較悲哀。這個公共函式自身也加了乙個鎖,而且和你加的鎖是一樣的。所以,除非你的使用的是訊號量,要不然你的程式一輩子也獲取不了這個鎖。

handle hlock;

void

sub_func()

void

data_process()

出現這種情況的原因很多。很重要的乙個方面是因為軟體的各個模組是不同的人負責的。所以本質上說,我們根本無法確定別人使用了什麼樣的鎖。你也無權不讓別人使用某個鎖。所以,遇到這種情況,只好靠你自己了。巢狀鎖就是不錯的乙個解決辦法。

(1)巢狀鎖的資料結構

typedef

struct _nestlock

nestlock;

nestlock*

create_nest_lock

(hanlde hlock)

(2)申請巢狀鎖

void

get_nest_lock

(nestlock* hnestlock)

else

}

(3)釋放鎖

void

release_nest_lock

(nestlock* hnestlock)

}

linux多執行緒之巢狀鎖技術

巢狀鎖這個概念,主要是為了根據程式設計中的一種情形引申出來的。什麼情況呢,我們可以具體說明一下。假設你在處理乙個公共函式的時候,因為中間涉及公共資料,所以你加了乙個鎖。但是,有一點比較悲哀。這個公共函式自身也加了乙個鎖,而且和你加的鎖是一樣的。所以,除非你的使用的是訊號量,要不然你的程式一輩子也獲取...

C 多執行緒與鎖

多執行緒是小型軟體開發必然的趨勢。c 11將多執行緒相關操作全部整合到標準庫中了,省去了某些坑庫的編譯,真是大大的方便了軟體開發。多執行緒這個庫簡單方便實用,下面給出簡單的例子 include include includeusing namespace std volatile int val m...

C 多執行緒 順序鎖

在互斥資料訪問中有一種多讀少寫的情況。正對這麼一種情形,我們也提出了讀寫鎖的方案。但是呢,這個鎖有些缺陷。什麼缺陷呢?那就是,這個寫鎖需要在所有的讀鎖完成之後才能寫。否則的話,寫鎖需要這麼一直等下去。那麼,有沒有什麼辦法能使得寫操作快速一點進行呢?那就是順序鎖。typedef struct sequ...