Javascript'te atomik bir test-set, semafor veya kilit gibi bir şey var mı?Javascript semafor/test-ve-set/kilitleme?
Özel bir iletişim kuralı (arka plan işlemi, tarayıcıyla ilgisi olmayan ayrı bir işlemde tam olarak çalışır) aracılığıyla eşzamansız arka plan işlemlerini çağıran javascript'im var. Bir yarış durumuna girdiğime inanıyorum; arka plan işlemi benim testim ile setim arasında döner ve javascript tarafında işler yapar. Gerçek bir semafor haline getirmek için test-ve-set işlemine ihtiyacım var.
Burada arka plan işlemleri tespit etmek ve bunları sıraya çalışır javascript kodu var:
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());
}
}
};
}();
Çağrı sıraya uygulayan tek olduğu; Harici bir işlemi çağırmak isteyen herkes Call.call ("bir şey") yapar.
Herhangi bir fikrin var mı? Eğer bir çerçeve böyle kullanıyorsanız
'Prosesinizin ne olduğunu daha ayrıntılı olarak belirtmek isteyebilirsiniz. Bu sunucu tarafı javascript mi? –
Javascript kodu her zaman atomiktir, bu nedenle kilitlemeye veya herhangi bir şey yapmaya gerek yoktur. [Neden javascript'te eşzamanlılık kontrol aracımız yok?] (Http://uzairfarooq.github.io/why-no-concurrency-control-tool-in-javascript/). –