线程_ioin_detach

来源:互联网 发布:家用网络监控 编辑:程序博客网 时间:2024/06/08 09:32
//join:开启此线程的程序要等被开启的线程结束后才能执行。//调用线程要等被调用线程执行完成后再退出//join总结:让当前主线程等待所有子线程执行完成才退出。//deatch:脱离主线程的绑定,主线程挂了,自动退出,不会报错。// deatch后线程之间不能通信。//joinable:判断是否可以加入。#include<iostream>#include<thread>#include<array>#include<Windows.h>using namespace std;void show(){int i(1);MessageBoxA(0, "1", "1", 0);while (1){cout << i++ << endl;}}//孤儿线程,脱离了主线程。void main3(){thread th(show);th.detach();//脱离主线程,主线程挂了,自动退出,不会报错。//即不使用 cin.get();这句也不会报错。不需要等待主线程。//cin.get();}//获取CPU核心数void main2(){//获取CPU 核心数,为了负载均衡一般开起的线程数都是CPU核数的整数倍。auto n = thread::hardware_concurrency();cout << n << endl;cin.get();}void main1(){array<thread, 3>threads={thread(show), thread(show), thread(show)};//for (int i = 0; i < 3;i++)//{//join:开启此线程的程序要等被开启的线程结束后才能执行。//调用线程要等被调用线程执行完成后再退出//threads[i].join();//}cin.get();}

0 0
原创粉丝点击