zoukankan      html  css  js  c++  java
  • 笔记3 linux 多线程 条件变量+互斥锁

    //cond lock
    #include<stdio.h>
    #include<unistd.h>
    #include<pthread.h>
    
    struct test
    {
        char a[10];
        char b[10];
        char c[10];
    }yb = {"111","222","33333"};
    
    static int j=0;
    
    pthread_mutex_t mutex_1 = PTHREAD_MUTEX_INITIALIZER;;
    pthread_cond_t  cond_1;
    
    void Print1(struct test *arg)
    {
        while(1)
        {
            pthread_mutex_lock(&mutex_1);
            pthread_cond_wait(&cond_1,&mutex_1); //等待满足某些要求的消息到达
            printf("a=%s,b=%s,c=%s,d=%X,j=%d
    ",arg->a,arg->b,arg->c,pthread_self(),j++);
            pthread_mutex_unlock(&mutex_1);
            pthread_exit((void *)j);
        }
        printf("Never Coming.
    ");
    }
    
    void Print2(void *arg1)
    {
        pthread_mutex_lock(&mutex_1);
        printf("coming.
    ");
        pthread_mutex_unlock(&mutex_1);
        pthread_cond_signal(&cond_1);
    }
    
    int main()
    {
        pthread_t pid1,pid2,pid3,pid4;
        void *set;
        pthread_cond_init(&cond_1,NULL);
        
        pthread_create(&pid1,NULL,&Print1,&yb);
        pthread_create(&pid2,NULL,&Print2,&yb);
        pthread_create(&pid3,NULL,&Print1,&yb);
        pthread_create(&pid4,NULL,&Print2,&yb);
    
        pthread_join(pid1,&set);
        printf("pid1 exit coed %d
    ",(int)set);
        pthread_join(pid2,&set);
        printf("pid2 exit coed %d
    ",(int)set);
        pthread_join(pid3,&set);
        printf("pid3 exit coed %d
    ",(int)set);
        pthread_join(pid4,&set);
        printf("pid4 exit coed %d
    ",(int)set);
    
        sleep(1);
        pthread_cond_destroy(&cond_1);
        return 0;
    }
  • 相关阅读:
    【转载】stm32的GPIO八种工作模式
    常用数字滤波算法总结
    ST-LINK使用注意
    【转载】深入理解嵌入式开发
    【stm32中断优先级--珍藏版】
    对飞控的理解(一)
    【转载】c语言数据的左移右移
    四轴之第一炸
    linux下查看隐藏文件
    Jetson TK1 五:移植工控机程序到板上
  • 原文地址:https://www.cnblogs.com/sherlockhomles/p/4838621.html
Copyright © 2011-2022 走看看