Что такое многопоточность (multithreading)

Ответ

Многопоточность — это способ выполнения нескольких потоков (threads) в рамках одного процесса. Потоки разделяют общую память, что позволяет им работать параллельно, ускоряя выполнение задач, особенно на многоядерных процессорах.

Особенности:

  • Потоки легче процессов (меньше накладных расходов).
  • Общая память упрощает обмен данными, но требует синхронизации (например, через mutex или semaphore).
  • В JavaScript многопоточность реализуется через Web Workers (отдельные потоки без доступа к DOM).

Пример (Web Worker):

// main.js
const worker = new Worker('worker.js');
worker.postMessage('Start');
worker.onmessage = (e) => console.log(e.data);

// worker.js
onmessage = (e) => postMessage('Worker received: ' + e.data);

Проблемы: гонки данных, дедлоки. Важно аккуратно управлять состоянием.