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
  • 相关阅读:
    hdfs command
    开机启动
    date
    tabulate
    django前后端分离403 csrf token missing or incorrect
    设计一个程序,程序中有三个类,Triangle,Lader,Circle。
    总结,
    数据库2
    JDBC数据库1
    网络编程2
  • 原文地址:https://www.cnblogs.com/zendu/p/4987998.html
Copyright © 2011-2022 走看看