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 进入等待状态 。。。。\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
posted on 2015-11-23 12:07 zyz913614263 阅读(560) 评论(0) 编辑 收藏 举报
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步