#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 进入等待状态 。。。。\n",pid); pthread_rwlock_wrlock(&rwlock); printf("写者%d 写>>>\n",pid); sleep(10); printf("写者%d 写结束\n",pid); pthread_rwlock_unlock(&rwlock); return NULL; } void *readfun(void *arg) { int pid = pthread_self(); printf("读者%d 进入等待状态。。。。\n",pid); pthread_rwlock_rdlock(&rwlock); printf("读者%d 读<<<\n",pid); sleep(1); printf("读者%d 读结束\n",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
时间: 2024-08-02 01:00:52