Предположим, у меня есть простой код;
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();
});