Jollen's email: jollen # jollen.org

more: Jollen's Consulting | Jollen's Wiki

« Openmoko 開放 Neo 手機工業設計 | Home | 開放手機:談東方開源 »

[教育訓練紀錄] nonblocking wait: try lock

jollen 發表於 March 15, 2008 6:13 PM

今天在進行 GNU Toolchains 與 Embedded Linux Programming 教育訓練課程時,提及以 shared memory 實作 IPC 時的同步問題。針對 unrelated process 的同步存取控制,一種古老的做法「locking」能簡單地應用在此同步問題上。

當寫入端做出 locking(如:lock file)時,讀取端便要等待 locking 被解除,因此這是一個 blocking wait 的架構。不過,若將「wait for unlucking」改成「try lock」,便能在中間的空閒時間「做點事情」,程式也不會晾著沒事做。

lock_trylock.png

一種簡單的程式架構,以「try lock」來做同步控制,讓程式閒著也要想辦法幹點活兒。另一個類似的觀念為 pthread semaphore 的 sem_trywait()

延伸閱讀

2007.01.16: Shared Memory 的 Race Condition

--jollen

引用通告

如果您想引用這篇文章到您的Blog,
請複製下面的鏈接,並放置到您發表文章的相應界面中。

http://www.jollen.org/cgi-bin/mt3/mt-tb.cgi/486

發表一個評論

(您發表的意見將被立即接受,但需要一點時間與後端伺服器做同步,您的留言才會顯示在網站上。為避免 spam 攻撃,按「發表」後請輸入帳號密碼。使用者帳號:「nospam」、密碼:「nospam」。)

[Top] Copyright (C) 2006,2010 www.jollen.org.
All rights reserved. All content licensed under Creative Commons License.