В C# термин «поток» относится к отдельному пути выполнения внутри программы. Потоки используются для достижения параллелизма и улучшения скорости отклика приложения. Вот несколько методов, связанных с работой с потоками в C#:
- Создание потока. Класс
Threadпредоставляет методы для создания потоков и управления ими. Вы можете создать новый поток, создав экземпляр классаThreadи передав метод для выполнения в качестве параметра.
Thread myThread = new Thread(MyThreadMethod);
- Запуск потока: после создания потока вы можете начать его выполнение с помощью метода
Start.
myThread.Start();
- Присоединение к потоку. Метод
Joinпозволяет дождаться завершения выполнения потока, прежде чем продолжить.
myThread.Join();
- Приостановка потока: метод
Sleepприостанавливает выполнение текущего потока на указанное время.
Thread.Sleep(milliseconds);
- Блокировка ресурсов. Ключевое слово
lockиспользуется для синхронизации доступа к общим ресурсам между несколькими потоками.
lock (lockObject)
{
// Critical section
}
- Синхронизация потоков. Класс
Monitorпредоставляет методы синхронизации потоков, такие какEnterиExit, которые используются для установки и снятия блокировок..
Monitor.Enter(lockObject);
// Critical section
Monitor.Exit(lockObject);
- Фоновые потоки. Вы можете пометить поток как фоновый поток, используя свойство
IsBackground. Фоновые потоки не препятствуют завершению работы приложения.
myThread.IsBackground = true;
- Пул потоков:.NET Framework предоставляет пул потоков, который управляет пулом рабочих потоков. Вы можете поставить рабочие элементы в очередь в пул потоков с помощью метода
ThreadPool.QueueUserWorkItem.
ThreadPool.QueueUserWorkItem(DoWork);
-
Потокобезопасность. Для обеспечения потокобезопасности и предотвращения повреждения данных в многопоточных сценариях можно использовать различные методы, такие как использование блокировок, мьютексов или класса
Interlocked. -
Отмена потоков. Классы
CancellationTokenиCancellationTokenSourceможно использовать для корректной отмены выполнения потоков.