【问题标题】:C++ Thread error?C++线程错误?
【发布时间】:2017-02-09 02:20:55
【问题描述】:

所以我对这个程序有一个问题,我试图制作它只是为了搞砸。我以前从未遇到过这个问题。代码是:

#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();
    }
}

错误是:well, error here

【问题讨论】:

  • 您遇到了什么问题?程序的期望行为是什么?
  • stackoverflow.com 上的所有问题都必须以纯文本形式包含在问题本身中的所有相关信息。指向外部网站的链接会随时停止工作,从而使问题变得毫无意义,这是不可接受的。
  • 我不确定,但我不相信你可以在调用detach 后调用线程上的函数。多次调用join 是安全的,但一旦分离,您就无法对thread 进行任何操作。
  • 目的是一直清屏,发出“wow dud”然后暂停。我在乱搞,我随机有这个小时

标签: c++ multithreading c++11


【解决方案1】:

不清楚错误是什么,但生命周期显然是错误的。线程在循环之前创建一次,但在循环中它被反复连接和分离。因此,循环的任何后续迭代都会对已经死的线程执行无效操作。也许你的意思是:

  while(true){
      std::thread wow(update);
      wow.join();
      wow.detach();
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2018-08-27
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多