Junior
105
questionbank
Что такое многопоточность?
Answer from AI
sobes.tech AI
Многопоточность позволяет выполнять несколько частей программы (потоков) concurrently, что делает приложение более отзывчивым и эффективным, особенно в задачах с интенсивным вводом/выводом или длительными вычислениями.
Основные концепции:
- Процесс: Запущенная программа с собственным адресным пространством и ресурсами.
- Поток: Единица выполнения внутри процесса, имеет собственный стек, регистры CPU, но разделяет ресурсы процесса (память, хэндлы файлов).
- Планировщик потоков: Операционная система управляет выполнением потоков, переключаясь между ними (context switching).
Преимущества:
- Повышение отзывчивости UI.
- Более эффективное использование ресурсов многоядерных процессоров.
- Упрощение асинхронногоprogramming (через модели вроде TPL).
Недостатки:
- Сложность синхронизации доступа к общим ресурсам (состояния race condition, deadlock).
- Увеличение накладных расходов на создание и управление потоками.
- Сложность отладки.
В C# многопоточность реализуется с использованием классов из пространства имен System.Threading и System.Threading.Tasks, в частности Thread, ThreadPool, Task, а также ключевых слов async и await.
Пример создания простого потока:
using System.Threading;
// Создание нового потока
Thread t = new Thread(DoWork);
// Запуск потока
t.Start();
void DoWork()
{
// Код, выполняющийся в отдельном потоке
Console.WriteLine("Работа в новом потоке.");
}