我想在两个无限循环之间交替;我该怎么做到这一点。我的代码是这样的:
#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之间切换?我只是测试一个想法来检查/比较两个循环时间(时间)之间的一些结果,以便在时间线中找到一些偏差/错误。
答案 0 :(得分:6)
主题:
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
您可以修改该代码,以使每个线程仅在某些条件为真时执行,例如。
答案 1 :(得分:3)
试试这个:
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;
}
当然,第二个代码没有意义。但是,嘿,这是两个循环!
答案 2 :(得分:2)
bool move = true;
while (true) {
while (found) {
// do work
if (condition) { found = false; }
}
while (!found) {
// do work
if (condition) { found = true; }
}
}
提供的答案可以应用于非常复杂的案例 - 以及您提到的简单案例。
答案 3 :(得分:1)
while (1)
{
while (1) {
loop1:
printf("I am in loop #1\n");
goto loop2;
}
while (1) {
loop2:
printf("I am in loop #2\n");
goto loop1;
}
}
但我不得不说最好的方法就是使用多线程
答案 4 :(得分:1)
在每个内部循环中使用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
答案 5 :(得分:-1)
你应该有2个线程并且有一些同步机制,如信号量等 备用的意图就像读者作家的问题。