1
в этом коде не является особо особенным; он будет всегда заканчивает спать дольше, чем все, что не так точно, и отказ от вашего временного фрагмента не равен никакой гарантии от ОС, когда вы его получите.
Назначение параметра времени в Thread.Sleep()
заключается в том, что ваша нить даст для не менее, что количество времени, примерно.
Так что код просто явно отказывается от своего временного интервала. Вообще говоря, такой бит кода не нужен, так как ОС будет управлять вашими потоками для вас, превентивно прерывая их для работы с другими потоками.
Такой код часто используется в «примерах пронизывающих», где автор хочет, чтобы заставить некоторое искусственное возникновение, чтобы доказать какое-либо условие гонки, или тому подобное (что, как представляется, имеет место в вашем примере)
Как отмечалось в ответе Джона Ханны на этот же вопрос, существует тонкое, но важное различие между Sleep(0)
и Sleep(1)
(или любым другим ненулевым числом), и, как намекает ChrisF, это может быть важно в некоторых ситуациях с потоками.
Оба из них связаны с приоритетами потоков; В потоках могут быть заданы более высокие/более низкие приоритеты, так что потоки с более низким приоритетом будут никогда не выполнять, если есть потоки с более высоким приоритетом, которые имеют какую-либо работу. В таком случае может потребоваться Sleep(1)
... Однако ...
Низкоприоритетные потоки также подчиняются тем, что другие процессы выполняют в одной и той же системе; поэтому, несмотря на то, что в вашем процессе не будут выполняться потоки с более высоким приоритетом, если какие-либо другие действия выполняются, ваши все еще не будут выполняться.
Это не обычно что-то вам когда-нибудь нужно беспокоиться; приоритет по умолчанию - это «нормальный» приоритет, и в большинстве случаев его не следует изменять. Подъем или опускание имеет многочисленные последствия.
Джо Albahari пишет об этой самой проблеме, здесь: http://www.albahari.com/threading/part2.aspx – dash
Спасибо, что выглядит как всю информацию, которая мне понадобится по этой проблеме. – YahooMania