C++线程错误?

Posted

技术标签:

【中文标题】C++线程错误?【英文标题】:C++ Thread error? 【发布时间】: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

【问题讨论】:

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

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

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

【讨论】:

以上是关于C++线程错误?的主要内容,如果未能解决你的问题,请参考以下文章

C++ 线程错误:没有名为“type”的类型

MFC 对话框错误中的 C++ 多线程

c++线程池std::promise和函数类型错误

C++ boost线程在实例化两次时导致分段错误

std::thread,在线程中抛出异常会导致 Visual C++ 中的中止错误

c++中的Posix线程