C++ 线程join和detach

# include<iostream>
# include<thread>
//C++里处理多线程的头文件是thread
using namespace std;
pthread_mutex_t flock=PTHREAD_MUTEX_INITIALIZER;
//初始化互斥锁,互斥锁只能同时被一个对象访问,如果同时有两个对访问,其中一个会被阻塞
void hello(char c)
{

    for(int i=0;i<100;i++) {
        pthread_mutex_lock(&flock);//上锁
        cout << c << " " << i << endl;
        pthread_mutex_unlock(&flock);//解锁
    }
}
int main()
{
    thread t0 (hello,'a');
    thread t1 (hello,'b');
    t0.join();
    t1.join();
    //t0.detach();
    //t1.detach();  
}

(1)当使用join()函数时,主调线程(main函数里有一个主调线程)阻塞,等待被调线程终止,然后主调线程回收被调线程资源,并继续运行;上面这段话的意思就是,使用join(),线程运行完,main函数才能结束。
(2)当使用detach()函数时,主调线程继续运行,被调线程驻留后台运行,主调线程无法再取得该被调线程的控制权。当主调线程结束时,由运行时库负责清理与被调线程相关的资源。上面这段话的意思就是,使用detach(),main函数不用等待线程结束才能结束。有时候线程还没运行完,main函数就已经结束了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 3,115评论 1 18
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 2,601评论 1 15
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。在这之前...
    4ea0af17fd67阅读 635评论 2 17
  • 我醒来时,看到石壁上分明写着:五百年,梦幻泡影;刹那间,物是人非。 “我年轻的时候也喜欢过一个姑娘,所以我一看你的...
    朽夜白哉阅读 692评论 0 2
  • 2018-11-09更新 跳转至Facebook App登录坑点总结 IOS: 如果前期接入过微信,需要注意重载的...
    我是糖大大阅读 11,919评论 11 50

友情链接更多精彩内容