[英]Managing a Queue with Multiple, Asynchronous Calls
我正在用JavaScript编写队列,该队列将由多个“服务器”异步处理。 我担心两个服务器可能会从队列中检索相同的项目。 它现在似乎没有发生,但我不想让它碰碰运气。 据我所知,JavaScript是单线程的。 这是否允许这样的假设,即即使同时有多个请求,JavaScript也会使用它自己的队列来执行该功能?
function getJob() {
if(jobs.length > 0) {
var job = jobs.shift();
$('#jobStatsQueueCount').text(jobs.length);
return job;
} else {
return null;
}
}
这是完整的代码:
JavaScript是单线程的; 是否允许这样的假设:即使同时有多个请求
“同时”在计算机领域不存在。 总有一些命令。
如果您单击两次,则会得到两个onclick事件,一个接一个。 即使您单击时浏览器很忙,它们仍然会一个接一个地发生,并且以您触发它们的相同顺序进行。 这是您可以假设的:事件永远不会相互竞争,超越或交错。
因为没有事件交织,所以即使shift
不是原子的(也可能不是,但也没有关系),您将永远不会面临像您建议的那种常见线程错误的风险。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.