我有一个脚本1)经常运行2)由许多不同的流程运行3)需要很长时间。
更新:需要很长时间的事情是测试每个进程的结果是否相同。完全是多余的。
我认为是时候进行一些缓存,但我担心种族,冲突,腐败,时间涡旋不稳定和鸡的可能性。
复杂性来自于任何进程都可以更新缓存以及读取缓存,因此我必须知道如何处理所有这些组合。
这让我闻起来像是一个比我自己更聪明,更有教养的人已经想到的东西。
无论如何,为了使这个问题更具体,这是我到目前为止所想到的。我正在使用羊群,不知道这是不是一个好主意。
希望有道理......
答案 0 :(得分:1)
这是一个在并发环境中使用flock(2)进行文件锁定的方案。 它解释了“safe-cache”的工作原理。
每个缓存文件都有两个配套文件(WLock和RLock)。 除第一个(NB WLock)外,所有flock请求都被阻塞。
有两个伴随文件只有一个原因,那就是生成新缓存时, 和旧缓存不太旧(缓存时间+ N未过期)客户端仍然可以使用旧缓存 而不是等待生成缓存。
请评论此计划,并尽可能简化。