首页 > 系统服务 > 详细

Linux IPC 同步(二):读写锁

时间:2015-07-07 12:52:42      阅读:181      评论:0      收藏:0      [点我收藏+]

读写锁的分配规则如下:

1.  只要没有线程持有某个指定的读写锁用于写,那么任意数目的线程可以持有该读写锁用于读;

2.  仅当没有线程持有某个指定的读写锁用于读或者用于写,才能分配读写锁用于写。

这样的访问方式也称为共享-独占上锁(shared-exclusion)

那么我想到了这样一个场景:

线程A要写数据,上锁未果被阻塞,期间不断有读者来读,线程A饿死......  (实验验证之)

int   pthread_rwlock_init(pthread_rwlock_t *, pthread_rwlockattr_t *);
int   pthread_rwlock_rdlock(pthread_rwlock_t *);
int   pthread_rwlock_tryrdlock(pthread_rwlock_t *);
int   pthread_rwlock_wrlock(pthread_rwlock_t *);
int   pthread_rwlock_trywrlock(pthread_rwlock_t *);
int   pthread_rwlock_unlock(pthread_rwlock_t *);
int   pthread_rwlock_destroy(pthread_rwlock_t *);

 

同样:

读写锁也可以在进程间使用,通过设置属性为PTHREAD_PROCESS_SHARED

#include <pthread.h>
int  pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *attr, int *valptr);
int  pthread_rwlockattr_setpshared(pthread_rwlockattr_t *attr, int value)

 

Linux IPC 同步(二):读写锁

原文:http://www.cnblogs.com/xiaokuang/p/4619568.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!