C++ thread的detach函数问题??

#include<iostream>
#include<thread>
using namespace std;
void function_1()
{
    std::cout << "Hello,world!" << std::endl;
}
int main() {
    std::thread t1(function_1);        //t1  starts  running.
    //t1.join();   //main thread waits for t1 finish .等待子线程my_thread执行完之后,主线程才可以继续执行下,此时主线程会释放掉执行完后的子线程资源。
    t1.detach();
    system("pause");
    return 0;
}
```但是执行结果还是会把“Hello,world! ”输出,这是程序哪里出了问题??

system("pause");从字面上看好像是让当前程序暂停,但是实际上这个只是调用了一个pause的命令,并且不会让程序暂停。

哇,请问一下,这个是c++那一个版本的标准函数,我 还不知道能这样写的
c++11还是后序版本?

detach是让线程独立 跟主线程脱离 这样主线程走到pause 而子线程就自己输出字符串等

可以不写system("pause")
你所说的退出原因是你调试了程序,即F5
如果直接运行,即不调试 ctrl+f5 就不会退出了~

您应该再仔细想一想 什么叫多线程~ 然后再搞清楚 detach和join的区别

肯定会输出的,首先你在主程序中启动了一个线程t1,现在程序中存在两个线程一个主线程,一个t1线程;当你调用detach()主线程与t1线程分离,这样他们成为了两个独立的线程遵循cpu的时间片调度分配策略,system("pause")会使主线程暂停,而t1线程肯定还会运行;