美文网首页
C++ 线程join和detach

C++ 线程join和detach

作者: 栗子_978b | 来源:发表于2018-11-18 16:48 被阅读0次
# 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函数就已经结束了。

相关文章

  • C++ 线程join和detach

    (1)当使用join()函数时,主调线程(main函数里有一个主调线程)阻塞,等待被调线程终止,然后主调线程回收被...

  • C多线程 队列

    join,detach thread::join(): 阻塞当前线程,直至 this 所标识的线程完成其执行。th...

  • threads_join,pthread_detach

    pthread_join与pthread_detach pthread_join函数会让主线程阻塞,直到所有线程都...

  • C++11多线程-【2】线程的join和detach

    C++11多线程-【2】线程的join和detach 本文翻译自 C++11 Multithreading – P...

  • C++ concurrency in action: 1~4 章

    1 概述 2 管理线程: thread/join/detach/RAAI/std::ref/std::bind/m...

  • C++ concurrency in action: Key p

    1 概述 2 管理线程: thread/join/detach/RAAI/std::ref/std::bind/m...

  • 3. Thread.h——封装thread

    该类封装了thread的create、join、detach等操作。 多线程中系统中将要大量使用线程操作函数。为了...

  • c++11 std::thread使用总结

    代码 编译 输出 总结 1 join()主线程等待子线程结束方可执行下一步(串行),detach()是的子线程放飞...

  • Pthread

    线程的join和detach两个状态 当一个可汇合的线程终止时,它的线程ID和退出状态将留到另一个线程对它调用pt...

  • 1.Start a thread

    不考虑线程间的竞争的话,对于启动线程,需要考虑到启动线程后是要对线程进行join还是detach,同时也需要注意进...

网友评论

      本文标题:C++ 线程join和detach

      本文链接:https://www.haomeiwen.com/subject/qnygfqtx.html