如何在两个无限循环之间交替

How to alternate between two infinite loops?

本文关键字:无限循环 两个 之间      更新时间:2023-10-16

我想在两个无限循环之间交替;我怎样才能做到这一点。我的代码是这样的:

#include <stdio.h>
int main() {
    // Master loop
    while (1)
    // loop # 1
    while (1) {
        printf("I am in loop #1");
    }
    // loop # 2
    while (1) {
        printf("I am in loop #2");
    }
} // end of master loop

如何在循环#1和循环#2之间交替?我只是在测试一个想法,在时间上(在时间上(检查/比较两个循环之间的一些结果,以便在时间线上发现一些偏差/故障。

线程:

std::thread t1([]() { while(true) printf("I am in loop #1"); }),
            t2([]() { while(true) printf("I am in loop #2"); });
t1.join();
t2.join(); // only necessary if t1 is not really an infinite loop

例如,您可以修改该代码,使每个线程仅在某些条件为true时执行。

试试这个:

while (1) {
    printf("I am in loop #1");
    printf("I am in loop #2"); // Not really but let's pretend we are
}

如果你真的想要两个循环:

while (1) {
myfirstloop:
    printf("I am in loop #1");
    goto mysecondloop;
}
while (1) {
mysecondloop:
    printf("I am in loop #2");
    goto myfirstloop;
}

当然,第二个代码没有意义。但是嘿,这是两个循环!

bool move = true;
while (true) {
    while (found) {
       // do work
       if (condition) { found = false; }
    }
    while (!found) {
       // do work
       if (condition) { found = true; }
    }
}

提供的答案可以应用于非常复杂的案例,也可以应用于您提到的简单案例。

在每个内部循环中使用break语句将退出该循环并进入下一个循环。很简单。

#include <stdio.h>
int main() {
// Master loop
 while (1) {
// loop # 1
  while (1) {
       printf("I am in loop #1");
       if(something)
           break;
  }
// loop # 2
  while (1) {
       printf("I am in loop #2");
       if(something)
           break;
  }
 }
} // end of master loop
while (1)
{
    while (1) {
        loop1:
        printf("I am in loop #1n");
        goto loop2;
   }
   while (1) {
       loop2:
       printf("I am in loop #2n");
       goto loop1;
   }
} 

但我不得不说,最好的方法是始终使用多线程

如果您的交替的意图就像读者和作者的问题。