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 *~
  • 相关阅读:
    qt动态加载UI文件
    Qt常见控件和操作
    MySQL
    tomcat
    linux iptables基础
    linux 网络基础
    linux CA及OpenSSL学习
    k8s 访问控制
    k8s 存储卷
    docker 安装部署
  • 原文地址:https://www.cnblogs.com/aaronLinux/p/7076945.html
Copyright © 2011-2022 走看看