读写锁写锁优先的坑

来源:互联网 发布:java获取图片绝对路径 编辑:程序博客网 时间:2024/06/11 09:06

pthread_rwlockattr_setkind_np(&rwLockAttr,PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);

可以设置写锁优先,当写锁和读写同时抢占时,写锁会优先执行,但这时读锁就不能在执行了,但同一个线程不能多次读锁

当一个线程有多次调用读锁时,就可能会出现死锁了

比如

thread1 readlock  readlock releaselock releaselock

thread2 writelock

可能在thread1第一次readlock后,这时thread2写锁来了,thread1 第二次readlock只能等待在那,但前一个readlock又没有释放,就造成死锁了