linux 读者写着问题 c++
来源:互联网 发布:董小飒dw淘宝 编辑:程序博客网 时间:2024/06/13 02:38
用读写锁解决
namespace std;
pthread_rwlock_t rwlock;
int add=0;
void *read(void*param){
string name=*((string*)param);
while(true){
if(add>=30){
break;
}
pthread_rwlock_rdlock(&rwlock);
cout<<name<<" read book"<<endl;
sleep(1);
cout<<name<<" leave"<<endl;
pthread_rwlock_unlock(&rwlock);
sleep(1);
}
}
void *write(void*param){
string name=*((string*)param);
while(true){
if(add>=30){
break;
}
pthread_rwlock_wrlock(&rwlock);
cout<<name<<" write book"<<endl;
sleep(1);
cout<<name<<" leave"<<endl;
add++;
cout<<add<<endl;
pthread_rwlock_unlock(&rwlock);
sleep(2);
}
}
int main(){
string name[5]={"write1","write2","read1","read2","read3"};
pthread_t write1,write2,read1,read2,read3;
pthread_rwlock_init(&rwlock,NULL);
pthread_create(&write1,NULL,write,&name[0]);
pthread_create(&write2,NULL,write,&name[1]);
pthread_create(&read1,NULL,read,&name[2]);
pthread_create(&read2,NULL,read,&name[3]);
pthread_create(&read3,NULL,read,&name[4]);
pthread_join(write1,NULL);
pthread_join(write2,NULL);
pthread_join(read1,NULL);
pthread_join(read2,NULL);
pthread_join(read3,NULL);
return 0;
}g++ -o name name.cpp -pthread
阅读全文
0 0
- linux 读者写着问题
- C 优先读者 读者/写者问题
- linux 读者写着问题 c++
- 读者写者 问题C线程实现 linux平台
- linux读者写者问题
- linux 读者写者问题 读者优先c++
- 【Linux学习笔记】39:Linux下C模拟读者写者问题
- 第二类读者写着问题
- Windows多线程 经典读者写着问题
- 读者写者问题
- 读者写者问题
- 读者-写者问题
- 读者写者问题
- 读者写者问题
- 读者-写者问题
- 读者-写者问题
- 读者-写者问题
- 读者写者问题
- ZStack OSAL的事件(event)与消息(message)——part1 & part2
- ESR 发现三种 C 的替代语言,C 语言的地位被动摇?
- 在JAVA中添加openlayer3的js包制作地图,使用geoserver发布地图,将发布的地图连接到网页中
- 代码编辑器 Codemirror 常用API
- VC与matlab混合编程
- linux 读者写着问题 c++
- Android入门——数据解析之使用GSON解析JSON字符串(二)
- 新版本的express怎么就搞不定,看这里
- 【JavaSE_学习笔记】Set接口及其子实现类
- springmvc学习 hello word
- 群控源码(可二次开发)
- 实验吧 头有点大
- ABAP delete的用法
- Idea SmartQQ 插件引起 setting界面不能弹出