while循环内部的switch语句(双重打破)

时间:2014-11-05 10:16:04

标签: c operating-system

有点愚蠢的控制流程问题:

基本上我有以下内容,

switch(r){
case(0):
  while (x != TRUE) {
     yield();
     break;
  }
  do_important_work();
  break;
}

如果满足条件(即如果x!= TRUE)我希望这个线程只是屈服,并在代码中的这个位置停止执行(即我做一个内核级上下文切换),并允许其他一些进程跑,以后再试。问题是while循环内部的中断只是打破了while循环,而不是整个switch语句。我真正想要的是执行产量,然后突破并允许另一个上下文切换发生。

这有意义吗?这是迟到的方式,我不能为我的生活找到解决方案。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:7)

那个结构看起来很痛苦。你会立刻打破,所以它实际上并没有循环。在这种情况下,您可以使用if,如下所示:

if (!x)
{
    yield();
}
else
{
    do_important_work();
}
break;