Почему "синхронный" - значит один за другим в контексте программирования ?

И почему "синхронный" - значит один за другим в контексте программирования ? Само слово "синхронный" - приводит к некому замешательству, это же "одновременно" означает.

Ответы
Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
06 июня 2022

Путаница с именованием действительно есть, так как понятия синхронный и асинхронный в программировании означают не совсем тоже, что в обычной жизни. Синхронный в программировании - это значит, что код выполняется синхронно с основным потоком программы. Например:

const syncFunc = () => 1 + 1;

const main = () => {
  const result = syncFunc();
  console.log(result);
};

main();

В примере выше функция syncFunc синхронная (обычная функция). Функция main() представляет из себя основную функцию программы, в ней вызывается функция syncFunc(). Благодаря тому, что функция syncFunc синхронная, то работа функции main будет длиться не меньше, чем работа функции syncFunc. То есть, если функция syncFunc будет выполняться 3 секунды, то и main будет выполняться не меньше 3 секунд, что логично, ведь внутри main код "ждёт" пока выполнится syncFunc. Если выполнение syncFunc увеличиться например на 2 секунды, то и работа main увеличиться на 2 секунды. То есть время работы функций syncFunc и main синхронно.

Теперь пример с асинхронной функцией:

const asyncFunc = () => {
  fs.readFile('./myfile', 'utf-8', (_error, data) => console.log('First!'));
};

const main = () => {
  asyncFunc();
  console.log('End!');
};

main();

Теперь main вызывает асинхронную функцию asyncFunc и не дожидается выполнения этой функции, сразу печатается "End!". То есть время работы asyncFunc никак не влияет на время работы main. Если asyncFunc увеличится на 3 секунды, то время выполнения main не увеличится на 3 секунды.