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