1
我有一個腳本,1)經常運行2)由許多不同的進程運行,3)需要很長時間。緩存鎖定了很多進程?
更新:需要很長時間的東西是測試誰的結果將在每個進程相同。完全多餘。
我認爲是時候做一些緩存,但我擔心種族,衝突,腐敗,時空渦不穩定和雞的潛力。
因爲任何進程都可以更新緩存以及讀取緩存,所以我必須知道如何處理所有這些組合。
這讓我覺得有點像某人比我更聰明,受過更多教育的東西已經可能想到了。
無論如何,爲了使這個問題更加具體,這是我迄今爲止想到的。我在腦海中使用羊羣,不知道這是個好主意。
- 如果緩存是新鮮的,閱讀並走開
- 如果緩存過期
- 試圖得到一個寫鎖
- ,如果我得到的鎖,執行測試和更新緩存
- 如果我沒有獲得鎖定,其他人是否有寫入鎖定或讀取鎖定?
- 如果它共享,他們爲什麼要讀一個陳舊的緩存?我是否忽略它們,進行測試並更新緩存(或者這可能導致它們讀取半寫入緩存......呃......)
- 如果它是獨佔的,給它們一小段時間以完成測試並且更新緩存。
- 試圖得到一個寫鎖
希望是有道理的......
嘿,我忘了我發佈了這個問題,剛纔又跑過去了。感謝您的答案和漂亮的圖表。 +1 – pileofrogs 2015-10-30 17:08:31