Как я смотрю по публикациям в Интернете, с 2010 года появились упоминания о Web workers в браузерах. То есть, JS стал уже реально многопоточным. Возникает проблема блокировок при модификации и доступе к не-атомарным данным.
Как быть?
На Хабре написано: <<Однако «параллельная задача» не значит что на десятиядерном процессоре ваш JavaScript заработает быстрее. JavaScript потоконейтрален, в спецификации ECMA не описано как JavaScript машина реализует многозадачность. Насколько я знаю, все существующие реализации JavaScript используют вариант многозадачности типа «Потоки в пространстве пользователя» (процессор быстро-быстро переключает задачи прерывая по таймеру внутри одного процесса) что однако не гарантирует что ядерная многопоточность никогда в будущем не сможет появиться и в JavaScript. Забегая вперёд скажу, что в конце концов потоки всё-таки насильно были введены в JavaScript немного странным образом через Web Worker...>>
Пример такой:
chrome.extension.onRequest.addListener(
function (request, sender, sendResponse) {
if(request && request.type == "check") {
sendResponse({
result: domains // отсылаем контент-скрипту массив в виде строки
});
}
}
);
...
var i = 0;
// загрузка config.xml
window.setInterval(function() {
domains.length = 0;
// вот тут массив "пустой"
domains = ...; // заполняем массив по-новой
i++;
}, 2*1000); // in milliseconds
Имеет ли смысл заморачиваться в ближайшие 1-2 года над этим?