Concurrency web应用程序中并发问题的重要性

Concurrency web应用程序中并发问题的重要性,concurrency,Concurrency,关于这一点,是否总是有必要拥有完全并发的安全web应用程序,或者开发人员是否有能力让一些可能并发的问题不被处理(例如,在不涉及金钱的情况下),因为它们发生的概率非常低。最佳做法是什么 注意:如果我说并发问题,我指的是由脚本的重叠执行引起的问题。我不是说像经典的时间戳丢失更新解决方案这样的多用户问题,因为这些问题发生的概率非常大,我非常确定,在这里,最好的做法是始终处理它们。如果要在web服务器上运行代码,您应该始终以这样一种方式编写代码,即它的多个副本可以同时运行 其实没那么难。在大多数情况下,

关于这一点,是否总是有必要拥有完全并发的安全web应用程序,或者开发人员是否有能力让一些可能并发的问题不被处理(例如,在不涉及金钱的情况下),因为它们发生的概率非常低。最佳做法是什么


注意:如果我说并发问题,我指的是由脚本的重叠执行引起的问题。我不是说像经典的时间戳丢失更新解决方案这样的多用户问题,因为这些问题发生的概率非常大,我非常确定,在这里,最好的做法是始终处理它们。

如果要在web服务器上运行代码,您应该始终以这样一种方式编写代码,即它的多个副本可以同时运行

其实没那么难。在大多数情况下,围绕状态修改操作的数据库事务就是所需的全部(或者使用锁文件,或者任何其他众所周知的解决方案)


注意:如果您所做的只是读取数据,那么就没有并发问题。

这太笼统了,无法回答。它总是取决于一个问题,一个问题是一个问题还是不那么重要。@deceze这是一个关于普遍做法的问题,一般的答案和指导方针是完全可能的。我同意这不是一个非常具体的问题,但许多有趣的问题都不是。@deceze我知道这是一个一般性的问题,但如果你仔细想想,你的第二句话就提供了一个可靠的答案。Bjorn的答案与你所说的相反,这意味着有一些东西需要讨论。我也认为代码应该在所有可能的方面都是正确的。同时,我发现这种并发性的东西很难思考——我总是试图思考一些可能出现问题的场景,在我找到它之后,我会采取适当的措施来防止它(对于数据库事务,我通常在innodb可重复读取事务中使用select for update或select locked in shared mode)。然而,这个过程需要很多时间,有时我知道它对系统的重要性很低。但是思考什么是重要的,什么不是也很痛苦。。。