Предположим, у меня есть простой код:
var counter = 0;
var sharedResource = [];//some shared resource
function incrementAndModify(){
if(counter == 0) {
sharedResource.push(Math.random());//very sensitive data
counter++;
}
}
function init(){
incrementAndModify();
doAjaxGetWithCallback(function(){incrementAndModify();});
incrementAndModify();
}
Итак, вопрос: будет ли функция incrementAndModify()
выполняться атомарно или нет? Я читал, что JS работает в одном потоке и не может быть проблем с параллелизмом. Но вопрос пока открыт (по крайней мере для меня).
Вместо:
doAjaxGetWithCallback(function(){incrementAndModify();});
Я мог бы написать что-то вроде:
doAjaxGetWithCallback(function(){
doSomeCrazyStuffThatDoesNotUseSharedResource();
incrementAndModify();
doSomeOtherCrazyStuffThatDoesNotUseSharedResource();
});