more: Jollen 的 Embedded Linux 教育訓練

« 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://blog.jollen.org/mt-tb.cgi/486

發表一個評論

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

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org