2009年4月30日 星期四

多工作業下的資料讀寫處理事項 - read()/write() 被 signal 中斷的處理

當 read() 或 write() 在處理資料時,若剛好產生了一個 signal ,系統為了要處理這個 signal ,便會中斷 read() 或 write() ,將程序狀態切換到 signal 的處理動作中。而當 signal 的處理動作結束後,再將程序狀態切換到 read() 或 write() 的後續處理動作。

在多工作業環境下, read()/write() 被系統中斷,將作業資源切換到其他工作狀態下的情形,是非常普遍的現象。中斷讀寫動作後再切換回去,想當然爾會關係到資料讀寫的完整性。因此切換回去後的後續處理動作,自然會影嚮資料讀取或寫入的完整性,但是在這一方面,各系統間卻有很大的差異存在,在 POSIX (*1) 中也未採取強制規範。

原文請參考這裡

沒有留言: