我正在一个购物网站上工作,我们只有独特的产品。因此,用户可以同时查看和添加相同的产品到他们的购物车,但是当他们下订单时,无论谁先放置它,都会将相同的商品添加到购物车中。
但是我有一个问题,即如何确保调用时我的下订单代码将被锁定,所有其他请求必须在队列中等待,直到它不完整为止。 我读到了关于锁定关键字但没有太多想法。任何帮助将不胜感激。
以下是我的代码的几个步骤:
步骤1:致电第三方服务以查看该项目是否可用 第2步:如果项目可用,则通过调用第三方服务购买。 步骤3:如果成功购买,则使用标志等更新数据库。
答案 0 :(得分:4)
您无法可靠地锁定Web服务器上的代码,因为多个Web请求可以在不同的进程中运行(至少在将来升级服务器时)。
相反,您应该确保数据库更改只能成功一次,并为第二个请求正常处理失败。数据库的变化自然而然地#34;原子因此,通过一些智能插入/更新,您的问题就解决了。