Skip to Content
LINUX系統程式設計 第二版
book

LINUX系統程式設計 第二版

by Robert Love
December 2013
Intermediate to advanced
496 pages
8h 57m
Chinese
GoTop Information, Inc.
Content preview from LINUX系統程式設計 第二版
執行緒
|
237
排他鎖
有許多技術可以讓關鍵區變成不可分割,解決方案包括單指令以及大的程式碼區塊。
最常見的技術是
上鎖
lock
)機制,此機制可確保關鍵區內的排他性,使其呈現原子
性。因為上鎖機制可達到排他性,它們在 Pthread(及其他地方)就是著名的
排他鎖
mutex
)。
3
此鎖的工作原理與真實世界的鎖類似:把房間想像成關鍵區。沒有鎖,人們(執行緒)
可以隨意進出房間(關鍵區)。具體來說,房間裡一次可以不止一個人。所以我們會替
房間安上了一扇門,而且門上有一個鎖。我們為門配了一把鑰匙。當有一個人(執行
緒)來到門旁,他會發現鑰匙就在門外。他會使用鑰匙開門,走進房間,然後從房內把
門鎖上。沒有人可以進入。然後,他可以在房內做自己的事而不會被打斷。沒有人可以
同時佔用房間;它是一個排他資源。當房內的人完成事情後,他會開門並離開房間,把
鑰匙放在門外。然後,下一個人可以進入房間,鎖上門,重複以上的步驟。
執行緒環境中的鎖,工作原理大致相同。程式設計者需要定義鎖,確保在進入關鍵區之
前能夠取得它。鎖的實作需確保一次只有一個執行緒持有鎖。若鎖已由另一個執行緒所
使用,新的執行緒在繼續下去之前必須等待它。當關鍵區裡的工作完成後,必須把鎖釋
出,讓正在等待的執行緒(如果有的話)能夠取得鎖以便繼續執行下去。
7 章〈爭用情況〉一節曾舉了一個銀行提款的例子。讓我們來看看一個排他鎖如何阻
止災難性(至少對銀行而言)的爭用情況。我們稍後才會探討如何操作 Pthread 所提供
的排他鎖(見第 7 章〈Pthread ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

優雅的SciPy|Python科學研究的美學

優雅的SciPy|Python科學研究的美學

Juan Nunez-Iglesias, Stéfan van der Walt, Harriet Dashnow
C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普

Publisher Resources

ISBN: 9789862769812