gpt4 book ai didi

c++ - 如何在线程中使用 while true?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:59 25 4
gpt4 key购买 nike

谁能指出我在这段代码中尝试做的事情,因为 SecondLoop 线程根本无法访问?仅当我删除 while(true) 循环时,它才变得可访问。

#include <iostream>
#include <thread>

using namespace std;

void Loop() {
while(true) {
(do something)
}
}

void SecondLoop() {
while(true) {
(do something)
}
}

int main() {
thread t1(Loop);
t1.join();

thread t2(SecondLoop);
t2.join(); // THIS THREAD IS UNREACHABLE AT ALL!

return false;
}

我之所以使用多线程是因为我需要同时运行两个循环。

最佳答案

join阻塞当前线程等待另一个线程完成。由于您的 t1 永远不会完成,因此您的主线程会无限期地等待它。

编辑:

要无限期并发地运行两个线程,首先创建线程,然后然后等待两者:

int main() {
thread t1(Loop);
thread t2(SecondLoop);

t1.join();
t2.join();
}

关于c++ - 如何在线程中使用 while true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33431445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com