如GNU C Library documentation fcntl(F_OFD_SETLK)
鎖定打開文件表項(通常由open()
獲取)。容易明白。打開文件說明Locks confusion(編輯)
但在同一文檔中的next example:
在示例過程中,每個線程調用open()
,所以每個文件描述符應指向一個不同的打開文件表項。
如果從每個線程中的fcntl(fd,F_OFD_SETLKW,& lck)獲取的鎖與新的打開文件表項關聯,則每個線程都會獲得由open()返回的新的打開文件表項的鎖定。在每個線程中。
話,怎麼可能在不同的文件表項的鎖提供獨佔寫訪問?
我缺少什麼?
我不明白這個問題。爲什麼你認爲''只是鎖定不同的開放文件表條目......意味着這個鎖定是完全錯誤的''? – Scott
該示例顯示了每個線程如何鎖定文件以獲得獨佔寫入訪問權限,導致其他線程停止運行,直到鎖定釋放。現在你的問題是什麼? – Philippos
如果每個線程使用fcntl(fd,F_OFD_SETLKW,和LCK)獲取的鎖與一個新打開的文件表項相關聯,則每個線程獲得這個新的文件打開表通過開放()返回在每個線程進入一個鎖。那麼如何才能鎖定不同的文件表條目提供獨佔寫訪問? –