相关疑难解决方法(0)

Javascript信号量/测试和设置/锁定?

在Javascript中是否存在原子测试和设置,信号量或锁定这样的事情?

我有javascript通过自定义协议调用异步后台进程(后台进程实际上在一个单独的进程中运行,与浏览器无关).我相信我遇到了竞争状态; 后台进程在我的测试和我的设置之间返回,在javascript端搞砸了.我需要一个测试和设置操作来使它成为一个真正的信号量.

这是尝试检测后台进程并将其排队的javascript代码:

Call = function () {

var isRunning = true,
    queue = [];

return  {
    // myPublicProperty: "something",

    call: function (method) {
            if (isRunning) {
                console.log("Busy, pushing " + method);
                queue.push(method);
            } else {
                isRunning = true;
                objccall(method);
            }
        },

        done: function() {
            isRunning = false;
            if (queue.length > 0) {
                Call.call(queue.shift());
            }
        }
    };
}();
Run Code Online (Sandbox Code Playgroud)

呼叫是一个实现排队的单身人士; 任何想要调用外部进程的人都会调用Call.call("something").

有任何想法吗?

javascript concurrency semaphore

52
推荐指数
2
解决办法
5万
查看次数

标签 统计

concurrency ×1

javascript ×1

semaphore ×1