zoukankan      html  css  js  c++  java
  • C/C++多线程

    一、pthread_once使相关代码只执行一次

    这个函数使用初值为PTHREAD_ONCE_INIT的once_control变量保证init_routine()函数在本进程执行序列中仅执行一次。

    #include <pthread.h>
    int pthread_once(pthread_once_t *once_control, void (*init_routine) (void))
    #include <iostream>
    #include <pthread.h>
    #include <unistd.h>
    
    using namespace std;
    
    pthread_once_t once = PTHREAD_ONCE_INIT;
    
    void once_run(void) {
        cout<<"once_run in thread "<<(unsigned int )pthread_self()<<endl;
    }
    
    void * child1(void * arg)
    {
        pthread_t tid =pthread_self();
        cout<<"thread "<<(unsigned int )tid<<" enter"<<endl;
        pthread_once(&once,once_run);
        cout<<"thread "<<tid<<" return"<<endl;
    }
    
    
    void * child2(void * arg)
    {
        pthread_t tid =pthread_self();
        cout<<"thread "<<(unsigned int )tid<<" enter"<<endl;
        pthread_once(&once,once_run);
        cout<<"thread "<<tid<<" return"<<endl;
    }
    
    int main(void)
    {
        pthread_t tid1,tid2;
        cout<<"main thread enter"<<endl;
        pthread_create(&tid1,NULL,child1,NULL);
        pthread_create(&tid2,NULL,child2,NULL);
        sleep(10);
        cout<<"main thread exit"<<endl;
        return 0;
    
    }
    
    /*
    main thread enter
    thread 4144080640 enter
    once_run in thread 4144080640
    thread 139667890611968 return
    thread 4152473344 enter
    thread 139667899004672 return
    main thread exit
    
    */
    View Code
  • 相关阅读:
    strcpy 详解
    c/c++中static详解
    c/c++中const详解
    12、Java中的接口
    11、java中的模板方法设计模式
    10、java中的抽象类
    9、java中的final关键字
    8、java继承中的this和super的应用
    7、java实现的两种单例模式
    6、java中的构造代码块
  • 原文地址:https://www.cnblogs.com/hellokitty2/p/10799216.html
Copyright © 2011-2022 走看看