zoukankan      html  css  js  c++  java
  • [pthread]Linux C 多线程简单示例

    #include <stdio.h>
    #include <pthread.h>
     
    pthread_mutex_t mutex;
    pthread_cond_t cond;
    
    void *thread1(void *arg)
    {
        pthread_cleanup_push(pthread_mutex_unlock,&mutex);
        //提供函数回调保护
        while(1){
            printf("thread1 is running
    ");
            pthread_mutex_lock(&mutex);
            pthread_cond_wait(&cond,&mutex);
            printf("thread1 applied the condition
    ");
            pthread_mutex_unlock(&mutex);
            sleep(4);
        }
        pthread_cleanup_pop(0);
    }
    
    void *thread2(void *arg)
    {
        while(1){
            printf("thread2 is running
    ");
            pthread_mutex_lock(&mutex);
            pthread_cond_wait(&cond,&mutex);
            printf("thread2 applied the condition
    ");
            pthread_mutex_unlock(&mutex);
            sleep(1);
        }
    }
    
    int main()
    {
        pthread_t thid1,thid2;
        printf("condition variable study!
    ");
        pthread_mutex_init(&mutex,NULL);
        pthread_cond_init(&cond,NULL);
        pthread_create(&thid1,NULL,(void*)thread1,NULL);
        pthread_create(&thid2,NULL,(void*)thread2,NULL);
        do{
            pthread_cond_signal(&cond);
        }while(1);
        
        sleep(20);
        pthread_exit(0);
        return 0;
    }

    Makefile

    CC=gcc #arm-linux-gnueabihf-gcc
    CFLAGS=-Wall 
    
    TARGET=pthread-test
    SRCS = pthread-test.c
    # INC = -I/home/gaorong/workspace/coreboard/kernel_4.1.6/include
    
    
    OBJS=$(SCR:.c=.o)
    
    $(TARGET):$(SRCS)
        $(CC) $(FLAGS) -pthread -o $@ $^
    
    clean:
        rm -rf $(TARGET) *.o *~
  • 相关阅读:
    Plotagraph软件五分钟光速速成傻瓜教程
    QT插件+ROS 2 新建项目
    QT插件+ROS 1 安装配置
    GitHub 优秀的 Android 开源项目 (精品)
    ROS的launch文件
    编写第一个 Shell 脚本
    CMake 入门实战
    ROS 创建服务和请求
    ROS 小乌龟测试
    【转】C++中的虚函数的实现
  • 原文地址:https://www.cnblogs.com/aaronLinux/p/7076945.html
Copyright © 2011-2022 走看看