1
我有一个脚本,1)经常运行2)由许多不同的进程运行,3)需要很长时间。缓存锁定了很多进程?
更新:需要很长时间的东西是测试谁的结果将在每个进程相同。完全多余。
我认为是时候做一些缓存,但我担心种族,冲突,腐败,时空涡不稳定和鸡的潜力。
因为任何进程都可以更新缓存以及读取缓存,所以我必须知道如何处理所有这些组合。
这让我觉得有点像某人比我更聪明,受过更多教育的东西已经可能想到了。
无论如何,为了使这个问题更加具体,这是我迄今为止想到的。我在脑海中使用羊群,不知道这是个好主意。
- 如果缓存是新鲜的,阅读并走开
- 如果缓存过期
- 试图得到一个写锁
- ,如果我得到的锁,执行测试和更新缓存
- 如果我没有获得锁定,其他人是否有写入锁定或读取锁定?
- 如果它共享,他们为什么要读一个陈旧的缓存?我是否忽略它们,进行测试并更新缓存(或者这可能导致它们读取半写入缓存......呃......)
- 如果它是独占的,给它们一小段时间以完成测试并且更新缓存。
- 试图得到一个写锁
希望是有道理的......
嘿,我忘了我发布了这个问题,刚才又跑过去了。感谢您的答案和漂亮的图表。 +1 – pileofrogs 2015-10-30 17:08:31