问题描述
- 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还是后序版本?
解决方案三:
可以不写system("pause")
你所说的退出原因是你调试了程序,即F5
如果直接运行,即不调试 ctrl+f5 就不会退出了~
解决方案四:
您应该再仔细想一想 什么叫多线程~ 然后再搞清楚 detach和join的区别
解决方案五:
肯定会输出的,首先你在主程序中启动了一个线程t1,现在程序中存在两个线程一个主线程,一个t1线程;当你调用detach()主线程与t1线程分离,这样他们成为了两个独立的线程遵循cpu的时间片调度分配策略,system("pause")会使主线程暂停,而t1线程肯定还会运行;
解决方案六:
c++ thread detach
pthread_detach()函数
pthread_detach()函数
解决方案七:
detach是让线程独立 跟主线程脱离 这样主线程走到pause 而子线程就自己输出字符串等
时间: 2024-12-28 19:32:35