2013年4月11日 星期四

緒程(task, thread) 間資料的同步與鎖定

種類

適用情況 狀態  
Binary Semaphore 只能被唯一一個緒程獨佔存取的資源 佔用與非佔用 旗號可以被任意緒程獲取並釋放
Semaphore 允許多個緒程同時存取的資源

獲取:
‧將旗號值減1
‧如果旗號值小於0,則進入等待狀態,否則繼續進行。
釋放:
‧將旗號值加1
‧如果旗號值小於1,喚醒一個等待中的緒程。

旗號可以被任意緒程獲取並釋放
Mutex 只能被唯一一個緒程獨佔存取的資源   由同一個緒程獲取和釋放
Critical Section  

進入關鍵區段
離開關鍵區段

作用範圍僅限於該行程,其他行程無法獲取鎖定。
Read-Write Lock 適用於讀取頻繁,僅偶爾寫入的情況。

兩種獲取方式:
共用(Shared) 或 獨佔(Exclusive)


若鎖定處於共用狀態,緒程試圖獲取獨佔,必須等所有緒程釋放鎖定
 

沒有留言:

張貼留言