Модель памяти Javascript - PullRequest
       10

Модель памяти Javascript

2 голосов
/ 27 ноября 2011

Да, я знаю, что запрос формальной модели памяти в 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 ..

1 Ответ

4 голосов
/ 27 ноября 2011

Нет никакого состояния гонки.

Весь код JavaScript в браузере однопоточный.

Обратный вызов setTimeout будет выполняться в потоке пользовательского интерфейса, пока он неделать что-то еще.

...