Найти в Дзене
1.2. Потоки в .NET (Managed Threads)
В .NET среда выполнения (CLR) разделяет потоки на два фундаментальных типа: Thread workerThread = new Thread(DoWork); workerThread.IsBackground = true; // Фоновый режим workerThread.Start(); Создание и управление: // Создание абстракции потока (нативный поток еще не создан) Thread myThread = new Thread(WorkerMethod); // Запуск нативного потока ОС myThread.Start(argument); // Ожидание завершения (блокирует текущий поток) myThread.Join(TimeSpan.FromSeconds(5)); // С таймаутом Управление выполнением: Thread.Sleep(15); // Гарантированное переключение контекста (~15 мс) Thread.Sleep(0); // Переключение на поток с равным/высшим приоритетом Thread...
7 месяцев назад
Планировщик Thread Scheduler
1.1.1. Планировщик потоков ОС (Thread Scheduler) Когда в системе одновременно выполняется множество потоков ОС (Software Threads), а доступных логических ядер (Hardware Threads) ограниченное количество, возникает вопрос: в каком порядке и на какое время назначать потоки на выполнение? Ответственность за это лежит на Планировщике потоков ОС (Thread Scheduler). Ключевые характеристики планировщика: Основные инструменты планировщика: Как это работает? Планировщик поддерживает очереди потоков, готовых к выполнению (в состоянии Ready), для каждого логического ядра (или группы ядер). Основываясь на...
7 месяцев назад
Thread в .NET
1. Thread в .NET 1.1. Потоки (Threads): Основы Что такое поток? Поток (Thread) — это базовая единица выполнения, которой операционная система (ОС) выделяет процессорное время. Если ваш код должен выполняться, ОС назначает для его исполнения поток. Каждое приложение (консольное, веб-API и т.д.) запускается внутри хотя бы одного потока. "Железная" основа выполнения потоков Производительность потоков напрямую зависит от характеристик процессора (CPU): Количество CPU (процессоров): От 1 (обычные ПК) до N (серверы). Количество ядер на CPU: Каждое физическое ядро способно выполнять один поток инструкций независимо...
7 месяцев назад