锁定或不锁定

时间:2013-06-14 22:16:00

标签: javascript jquery mutex semaphore race-condition

我有一个JavaScript / jQuery Web应用程序,其中包含一个对象,用户可以通过DOM事件以及服务器通过Web套接字或xhr进行读/写访问。

我知道JavaScript是单线程的。尽管如此,我怀疑在这个设置中,有问题的对象可能会受到竞争条件的影响,我想知道如何在没有JavaScript锁定的情况下处理这个问题。

3 个答案:

答案 0 :(得分:1)

JavaScript中存在一种锁定:当您向您发送AJAX请求(本机XMLHttpRequest)时,您可以将异步属性设置为false,以便浏览器窗口对于来自用户的任何交互都会被“锁定”,直到它收到服务器回答发送的ajax请求。

关注mozilla dev docs了解详情

答案 1 :(得分:1)

嗯......我想你可以编写各种各样的“锁”,如果你说的是多个东西都需要独占使用对象,那些用途跨越多个事件。

以下是概念验证:https://github.com/chris-martin/lock.js

答案 2 :(得分:0)

套接字将通过事件写入,就像用户一样。无论来源是什么,事件都会排队。无需担心并发问题。