什么样的循环是(;;)?

use*_*294 14 c kernel mutex for-loop

在torvalds/linux-2.6.git中找到 - > kernel/mutex.c第171行

我试图在谷歌上找到它,但无济于事.

什么for (;;)指示?

Bli*_*ndy 46

它的字面意思是"什么都不做,直到什么都没发生,并且在每一步都没有做任何事情来为下一步做好准备".基本上,它是一个无限循环,你必须从内部用某种方式打破break,returngoto声明.


Abh*_*Rao 20

for(;;)是一个无限循环条件,类似于while(1),正如大多数人已经提到的那样.您经常会在内核互斥代码中看到这一点,或者在互联网上看到问题,例如餐饮哲学家.在将互斥变量设置为特定值之前,第二个进程可以访问资源,第二个进程继续循环,也称为忙等待.对资源的访问可以是磁盘访问,对于该访问,2个进程正在竞争以使用互斥锁获得访问权,使得一次只有一个进程可以访问资源.

  • @Jim,公平地说,没有循环是无限的,因为你可能随时失去动力,或者你的机器会死于老年.他正在谈论更多关于向编译器请求一个没有结束条件的循环而不是实际无限的循环. (2认同)

M. *_*iaz 9

它是一个无限循环,没有初始条件,没有增量条件,没有结束条件.所以它将永远迭代等同于while(1).

  • 我知道至少有一个编译器会警告while(1)或while(true)循环,但"知道"不会产生(;;)的诊断,因为它被认为是无限循环的"标准"形式. (4认同)

Wim*_*Wim 5

它永远循环(直到循环内部的代码调用,break或者return当然while(1)是等效的,我个人觉得使用它更合乎逻辑.