Какой цикл для (;;)?

Найденный в torvalds/linux-2.6.git-> kernel/mutex.c строка 171

Я попытался найти его на Google и таком напрасно.

Что делает for (;;) сообщить?

14
задан Samuel Liew 28 November 2011 в 06:09
поделиться

9 ответов

Функция for(;;) - это бесконечное условие цикла, похожее на while(1), о котором уже упоминалось большинство. Чаще всего это встречается в кодах мьютексов ядра, или, например, в проблемах с мьютексом, как, например, ужинающие философы. До тех пор, пока переменная мьютекса не будет задана в определенном значении, так что второй процесс получает доступ к ресурсу, второй процесс продолжает петлять, также известную как "занятое ожидание". Доступ к ресурсу может быть дисковым, за что 2 процесса соревнуются в получении доступа с помощью мьютекса так, что за один раз только один процесс имеет доступ к ресурсу.

20
ответ дан 1 December 2019 в 05:48
поделиться

Это буквально означает "ничего не делать, пока ничего не случится, и на каждом шагу ничего не делать, чтобы подготовиться к следующему". По сути, это бесконечный цикл, который нужно как-то разорвать изнутри, используя утверждение break, return или goto.

.
46
ответ дан 1 December 2019 в 05:48
поделиться

Это эквивалентно while( true )

Edit: Так как были некоторые дебаты, вызванные моим ответом (хорошие дебаты, заметьте), следует уточнить, что это не совсем верно для программ на Си, не написанных на С99 и за его пределами, где stdbool.h установил значение true = 1.

4
ответ дан 1 December 2019 в 05:48
поделиться

это бесконечный цикл.

2
ответ дан 1 December 2019 в 05:48
поделиться

Я имею в виду:

#define EVER ;;

for(EVER)
{
     // do something
}

Предупреждение: Использование этого в вашем коде крайне нежелательно.

1
ответ дан 1 December 2019 в 05:48
поделиться

Это то же самое, что написание бесконечного цикла с использованием оператора " for ", но u должен использовать break или другой оператор, который может выйти из этого цикла.

.
2
ответ дан 1 December 2019 в 05:48
поделиться

Это бесконечный цикл, в котором нет начального условия, нет условия приращения и нет конечного условия. Поэтому он будет выполнять итерацию, эквивалентную while(1), навсегда.

9
ответ дан 1 December 2019 в 05:48
поделиться

Он зацикливается навсегда (до тех пор, пока код внутри цикла не вызовет break или return, конечно. , в то время как(1) является эквивалентным, лично мне кажется более логичным его использовать.

5
ответ дан 1 December 2019 в 05:48
поделиться

Очевидно, это было условие бесконечного цикла.

0
ответ дан 1 December 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: