Чтение CLR через C# 2.0 (сейчас у меня нет 3.0)
Это все еще так:
Если в компьютере есть только один ЦП, в любой момент времени может выполняться только один поток. Windows должна отслеживать объекты потока, и время от времени ей приходится решать, какой поток следует запланировать следующим для перехода к ЦП. Это дополнительный код, который должен выполняться каждые 20 миллисекунд или около того. Когда Windows заставляет ЦП прекратить выполнение кода одного потока и начать выполнение кода другого потока, мы называем это переключением контекста. Переключение контекста довольно затратно, потому что операционная система должна:
Итак, примерно CLR через C # 2.0, допустим, мы на Pentium 4 2,4 ГГц, 1 ядро, без HT, XP. Каждые 20 миллисекунд? Если поток CLR или Java сопоставляется с потоком ОС, только максимум 50 потоков в секунду могут запуститься?
Я читал, что переключение контекста происходит очень быстро в микросекундах здесь, на SO, но как часто грубо (догадки в стиле величины) скажет скромный 5-летний сервер Windows 2003 Pentium Xeon, одноядерный, дающий ОС возможность переключать контекст? 20 мс в нужном месте?
Мне не нужны точные цифры, я просто хочу убедиться, что они в нужном месте, мне кажется, что это довольно долго.