C++创建线程

简介c++在运行一个可执行程序的时候(创建了一个进程),会自动的创建一个主线程,这个主线程和进程同生共死,主线程结束,进程也就结束了。 #include "pch.h" #include <iostream> #include <thread> void print1() { cout << "print1_1线程执行" << endl; cout << "print1_2线程执行" << endl;

c++在运行一个可执行程序的时候(创建了一个进程),会自动的创建一个主线程,这个主线程和进程同生共死,主线程结束,进程也就结束了。

#include "pch.h"
#include <iostream>
#include <thread>
void print1()
{
    cout << "print1_1线程执行" << endl;
    cout << "print1_2线程执行" << endl;
    cout << "print1_3线程执行" << endl;
}
using namespace std;
int main()
{
    thread mythread1(print1);
    mythread1.join();
    //mythread1.detach();
    cout << "主线程执行" << endl;
    return 0;
}
  • thread mythread1(print1)创建一个线程mythread1,print1()是该线程的初始函数(执行函数)。
  • mythread1.join();阻塞主线程,等待mythread1这个线程执行完毕在继续执行,推荐这种做法。
  • mythread1.detach();分离,使主线程和线程mythread1分离,主线程可以先执行结束,如果主线程执行完了,子线程会在c++后台运行,一旦使用detach(),与这个子线程关联的对象会失去对这个主线程的关联,此时这个子线程会驻留在c++后台运行,当主线程执行完毕结束,子线程会移交给c++运行时库管理,这个运行时库会清理与这个线程相关的资源(守护线程),detach()会是子线程失去进程的控制,所以建议不要使用detach(),建议使用jion()。
本文转自:https://www.cnblogs.com/suchang/p/10568998.html