kid-programmer
@kid-programmer

Вопрос по Thread.Sleep(1)?

Почему код выполняется не 6 а 12 секунд?
for (int i = 0; i <= 6000; i++)
            {
                Thread.Sleep(1);
                Console.WriteLine(i);
            }
  • Вопрос задан
  • 334 просмотра
Решения вопроса 1
dordzhiev
@dordzhiev
Потому что контекст переключается по таймеру. Thread.Sleep(n) усыпляет поток на не менее чем n мс.
И да, гугл поможет.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
А причем здесь секунды.
Поток уснул, попал в конец очереди со своим приоритетом, время выйдет, он попросится назад, если CPU за это время на это ядро не выдавал время потоку из другого процесса, то восстанавливать адресное пространство не придется, и он только загрузит состояние потока на котором его убирал и продолжит работу.
Скорость работы кода всегда будет разная.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы