线程与读写锁
来源:互联网 发布:淘宝首页焦点图在哪里 编辑:程序博客网 时间:2024/04/29 23:32
#include <pthread.h>#include <stdio.h>pthread_rwlock_t lock;void * write1(void *arg){ pthread_rwlock_wrlock(&lock); puts("write1"); pthread_rwlock_unlock(&lock); return((void *)1);}void *write2(void *arg){ pthread_rwlock_wrlock(&lock); puts("write2"); pthread_rwlock_unlock(&lock); return((void *)2);}void *read1(void *arg){ pthread_rwlock_rdlock(&lock); puts("read1"); sleep(10); pthread_rwlock_unlock(&lock); return((void *)3);}void *read2(void *arg){ pthread_rwlock_rdlock(&lock); puts("read2"); pthread_rwlock_unlock(&lock); return((void *)3);}int main(void){ pthread_t th1,th2,th3,th4; int ret; ret =pthread_create(&th1,NULL,write1,NULL); if( ret != 0 ) { perror("pthread1 "); return 0; } usleep(1000); ret = pthread_create(&th3,NULL,read1,NULL); if( ret != 0 ) { perror("pthread3 "); return 0; } usleep(1000); ret = pthread_create(&th4,NULL,read2,NULL); if( ret != 0 ) { perror("pthread4 "); return 0; } usleep(1000); ret = pthread_create(&th2,NULL,write2,NULL); if( ret != 0 ) { perror("pthread2 "); return 0; } pthread_join(th3,NULL); pthread_rwlock_destroy(&lock); return 1;}
读写锁特点:
1)多个读者可以同时进行读
2)写者之间必须互斥
3)写者与读者之间互斥
4 ) 写者优先于读者(唤醒时优先考虑写者)
互斥锁特点:
1 ) 一次只能一个线程拥有互斥锁,其他线程只有等待
读写锁实现了互斥锁
0 0
- 线程与读写锁
- java线程:互斥锁与读写锁
- java线程:互斥锁与读写锁
- java线程:互斥锁与读写锁
- 线程同步与互斥:读写锁
- 线程同步与互斥:读写锁
- 10066--- java线程:互斥锁与读写锁
- JAVA线程读写锁与线程之间通信例子
- 线程高级---读写锁
- 线程ReadWriteLock 读写锁
- 线程读写锁
- 线程通信----读写锁
- java 线程读写锁
- 线程读写锁总结
- 线程同步-读写锁
- 线程与同步之三——读写锁
- 【Linux系统编程】线程同步与互斥:读写锁
- 线程互斥——互斥锁与读写锁
- c语言线程池的简单实现
- mysql查询在一张表存在而另外一张表的不存在的写法
- Idea+Maven创建scala项目
- aqicn.org的秘密
- iOS中的三大定时器
- 线程与读写锁
- node.js学习日记——(7)
- 【JZOJ4964】【GDKOI2017模拟1.21】Rhyme
- HDU 2057 A + B Again 【16进制加法】
- vi编辑器常用功能
- 对std::vector/list的iterator简单包装尝试
- Spring_16_AOP 基础
- scala + intellij idea 环境搭建及编译、打包
- 猫和路由器和交换机的区别