zoukankan      html  css  js  c++  java
  • linux 多线程编程-读写者问题

    #include <cstdio>
    #include <pthread.h>
    #include <unistd.h>
    
    int buffer[10];
    int i,j;
    
    pthread_rwlock_t rwlock;
    
    
    void *writefun(void *arg)
    {
        int pid = pthread_self();
        printf("写者%d 进入等待状态 。。。。
    ",pid);
        pthread_rwlock_wrlock(&rwlock);
        printf("写者%d 写>>>
    ",pid);
        sleep(10);
        printf("写者%d 写结束
    ",pid);
        pthread_rwlock_unlock(&rwlock);
        return NULL;
    }
    
    void *readfun(void *arg)
    {
        int pid = pthread_self();
        printf("读者%d 进入等待状态。。。。
    ",pid);
        pthread_rwlock_rdlock(&rwlock);
        printf("读者%d 读<<<
    ",pid);
        sleep(1);
        printf("读者%d 读结束
    ",pid);
        pthread_rwlock_unlock(&rwlock);
        return NULL;
    }
    
    int main()
    {
        pthread_t pread[3],pwrite;
        pthread_create(&pwrite,NULL,writefun,0);
        for(int i=0; i < 3; i++)
            pthread_create(&pread[i],NULL,readfun,0);
    
        pthread_join(pwrite,NULL);
        for(int i = 0; i < 3; i++)
            pthread_join(pread[i],NULL);
        return 0;
    }
    
    编译选项
    
    g++ -lpthread -o main main.cpp
    ./main
  • 相关阅读:
    连通块问题
    线性数据结构
    NOIP2018总结
    原码反码补码详解
    一些常用的算法技巧总结
    骗分导论
    模板
    模板
    AcWing
    AcWing
  • 原文地址:https://www.cnblogs.com/zendu/p/4987998.html
Copyright © 2011-2022 走看看