Одновременное увеличение счетчика в файле - PullRequest
1 голос
/ 29 сентября 2019

У меня есть файл с целым числом, скажем, 10.

Каждый запрос http мое приложение nodejs читает целое число из файла, добавляет 1 и записывает результат:

fs.readFile(..., result => ...fs.writeFile(..., result + 1) );

Если два http-запроса поступают почти одновременно, возможно ли, что оба прочитают 10 и напишут 11, или файл всегда будет содержать 12?

Если не последний, как это предполагается?решаться так, чтобы оно всегда было?

1 Ответ

0 голосов
/ 29 сентября 2019

я думаю, что это должно вам помочь.Мы просто проверяем нашу переменную «продолжая», и если задача уже выполняется, мы ждем до ее завершения

const incrementor = {
  proceeding : false,
  result : 0,
  doWork: async function(){
      //waiting
      while(proceeding){
      //dont know should i use it in backend
        await new Promise(resolve=>{
          setTimeout(()=>{
            resolve();
          },5)
        })
      }
      proceeding = true;
      result = await fs.readFile('dwadwad.dwad');  
      result++;
      fs.writeFileSync(..., result);
      proceeding = false;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...