【发布时间】:2013-06-14 22:16:00
【问题描述】:
我有一个 JavaScript/jQuery Web 应用程序,其中包含一个对象,用户可以通过 DOM 事件以及服务器通过 Web 套接字或 xhr 进行读/写访问。
我知道 JavaScript 是单线程的。尽管如此,我怀疑在这种设置中,有问题的对象可能会受到竞争条件的影响,我想知道在 JavaScript 中没有锁的情况下如何处理这个问题。
【问题讨论】:
-
如果您正在通过 websocket 异步处理对象副本的更新,那么您必须 (a) 确保每次更新都已完成并将对象置于正确的状态(即原子的),或者(b)实现事务(呃,有一个库吗?),或者(c)接受本地对象不时处于不正确的状态。
-
我认为我从未见过真正的竞争条件出现在实际的 javascript 代码中,尽管一切都是第一次......
标签: javascript jquery mutex semaphore race-condition