【发布时间】:2016-05-08 15:19:52
【问题描述】:
假设我有计算机 A 和一个变量 x,它更新得非常频繁,并且这个更新也需要一些时间(假设:要求每秒更新一次,更新需要 0.5 秒)。
现在,每分钟一次,我的计算机 B 在 HTTP GET 请求中询问 x 的值。 A 给他发了一份 x 的副本。
因为 x 可能会被 A 使用,所以我需要确保不会出错。
我怎么能保证呢?我有哪些选择?
【问题讨论】:
-
我认为我不太了解您的问题,但您是否正在寻找类似的东西:有一个变量“busy”,如果正在使用“x”,则将其设置为 true。因此,如果 A 使用“X”并且 B 发送 HTTP GET 请求,则服务器将响应“x”正在使用或拒绝该请求。
-
@farooqaaa 我不能拒绝请求,我必须返回 x 或 x 上的函数。如何以一种聪明的方式等待 A 完成使用 x?
-
记住最后一个
x并发送它而不等待新的x -
如果它不断更新,那么只需给它“x”的当前值。下一次它请求它应该得到新的值。如果使用了“x”的值,并不意味着它不能被访问。如果您在忙时拒绝请求,情况也是如此。下一个请求将检索新值。
-
@farooqaaa 这是您可以给编写并发代码的人提供的最糟糕的建议。测试永远不能证明代码是正确的,只是它是错误的。众所周知,测试并发代码很难开始,最好事先考虑问题。
标签: python multithreading http operating-system communication