我需要在 GO 中實(shí)現(xiàn)以下行為:進(jìn)程應(yīng)該能夠讀取文件,而不管其他進(jìn)程是否已鎖定文件進(jìn)行寫(xiě)入進(jìn)程應(yīng)該先獲得寫(xiě)鎖,然后才能寫(xiě)入文件。這是為了保證多個(gè)進(jìn)程不能寫(xiě)入同一個(gè)文件一個(gè)進(jìn)程不應(yīng)該等待獲得寫(xiě)鎖,如果它不能獲得鎖,它應(yīng)該繼續(xù)前進(jìn)對(duì)于基于 UNIX 的系統(tǒng),GO 中的 syscall 包定義了 flock 函數(shù),可以通過(guò)以下方式實(shí)現(xiàn)上述行為:將 syscall.flock 函數(shù)與 LOCK_EX 一起使用 | LOCK_NB 在寫(xiě)入文件之前嘗試獲取鎖在讀取文件之前不要檢查任何鎖GO 中的 Windows 系統(tǒng)調(diào)用包,不包括 flock。鑒于此,我怎樣才能最好地編寫(xiě)可以執(zhí)行跨平臺(tái)并具有上述行為的代碼?我想嘗試在不進(jìn)行操作系統(tǒng)特定調(diào)用或使用不安全的情況下實(shí)現(xiàn)這一點(diǎn)。PS:我不想要強(qiáng)制文件鎖定,進(jìn)程會(huì)在執(zhí)行文件操作之前檢查文件鎖定
GO中如何實(shí)現(xiàn)跨平臺(tái)文件鎖
人到中年有點(diǎn)甜
2021-11-08 18:50:30