C++ C++;线程错误?
所以我对这个程序有一个问题,我只是想把它弄得乱七八糟。我以前从未遇到过这个问题。代码是:C++ C++;线程错误?,c++,multithreading,c++11,C++,Multithreading,C++11,所以我对这个程序有一个问题,我只是想把它弄得乱七八糟。我以前从未遇到过这个问题。代码是: #include <iostream> #include <windows.h> #include <thread> void update(){ system("cls"); std::cout << "Wow dud"; system("pause >nul"); } int main(){ std::thread wow(update); whi
#include <iostream>
#include <windows.h>
#include <thread>
void update(){
system("cls");
std::cout << "Wow dud";
system("pause >nul");
}
int main(){
std::thread wow(update);
while(true){
wow.join();
wow.detach();
}
}
#包括
#包括
#包括
无效更新(){
系统(“cls”);
std::cout不清楚错误是什么,但生命周期显然是错误的。线程在循环之前创建过一次,但在循环中它会被重复地连接和分离。因此,循环的任何后续迭代都会对已经死掉的线程执行无效操作。可能您的意思是:
while(true){
std::thread wow(update);
wow.join();
wow.detach();
}
您遇到的问题是什么?程序的预期行为是什么?stackoverflow.com上的所有问题必须以纯文本形式包含问题本身的所有相关信息。指向外部网站的链接可能会随时停止工作,从而使问题变得毫无意义,这是不可接受的。我不确定,但我不确定相信一旦调用了detach
,你就可以调用线程上的函数。多次调用join
是安全的,但是一旦分离,你就不能用线程做任何事情了。目的是不断地清除屏幕,发出“wow dud”,然后暂停。我在胡闹,这一小时我是随机的