是的,我知道在Javascript中要求一个正式的内存模型是没有希望的,所以我满足于“所有浏览器都遵循这些规则”之类的东西。
我的问题如下:我必须以定义的时间间隔向服务器发送事件,但在这样做的同时可能会将事件添加到我的数组中,即:
function storeEvent(event) {
// may be called at any time
storedEvents.push(event);
}
function broadcastEvents() {
if (storedEvents.length !== 0) {
var eventString = JSON.stringify(storedEvents);
storedEvents = [];
// send eventString to server
}
window.setTimeout(broadcastEvents, BROADCAST_TIMER);
}这里面有一个明显的竞争条件,甚至没有考虑到丢失的内存屏障。
该怎么办呢?这里确实缺少Java内存模型..
发布于 2011-11-27 11:09:36
没有任何竞争条件。
浏览器中的所有JavaScript代码都是单线程的。
setTimeout回调将在UI线程上运行,而它不执行任何其他操作。
https://stackoverflow.com/questions/8283340
复制相似问题