Ответ
Многопоточность — это способ выполнения нескольких потоков (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);
Проблемы: гонки данных, дедлоки. Важно аккуратно управлять состоянием.