gpt4 book ai didi

google-app-engine - Google 应用引擎 : which solves the race condition? 交易还是比较并设置?

转载 作者:行者123 更新时间:2023-12-04 05:11:35 25 4
gpt4 key购买 nike

在带有 Python 的 Google App Engine 上,我正在寻找竞争条件问题的解决方案,即多个用户试图同时增加某个计数器。我找到了其中的两个:transactions 中描述的 increment_counter()和compare-and-set 中的bump_counter() .
我的问题:1)他们都完全解决了竞争条件问题吗? 2)如果是这样,哪个更好?

此外,某些机构能否详细说明它们中的每一个,因为我看不到代码如何解决问题。例如,1) 在 increment_counter() 事务期间,如果另一个用户更新计数器,事务会失败吗? 2) 类似地,在比较和设置中的bump_counter() 期间,如果另一个用户更新计数器,client.cas() 会失败吗?

最佳答案

  • 是的,他们都可以 消除竞争条件。
  • 第一个是使用数据存储,第二个是内存缓存。所以他们不能相提并论。 Memcache 是不稳定的,可以随时清除 - 您不应该使用它来存储永久数据。所以在这方面数据存储事务更好。此外,事务可以保证一组实体的原子性,而 compare_and_set 只保证一个 memcache 值的原子性。
  • 事务不做阻塞。如果它们检测到碰撞,它们就会失败,您需要将其回滚并自己再次重复。
  • 内存缓存同上:您需要自己重复该过程。
  • 关于google-app-engine - Google 应用引擎 : which solves the race condition? 交易还是比较并设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14868786/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com