深圳网站建设 迈,要做网络推广,福田公司简介,设计网站源代码#xff08;1#xff09;读写锁#xff1a;只有一把锁#xff0c;但是有两种状态#xff08;读#xff0c;写#xff09; 1#xff09;读写锁的三种状态#xff1a;读锁#xff0c;写锁#xff0c;不加锁 2#xff09;读写锁特性#xff08;12字#xff09;…1读写锁只有一把锁但是有两种状态读写 1读写锁的三种状态读锁写锁不加锁 2读写锁特性12字写锁优先级高写独占读共享 1写模式加锁时解锁前所有对该线程加锁的线程都会被阻塞。 2读模式加锁时如果线程是读加锁则成功如果线程是写加锁会阻塞。 3读锁、写锁并行阻塞时写锁优先级高即解锁后优先执行写锁操作。 3读写锁非常适合对数据读的次数比写的次数多。
2读写锁函数成功返回0失败直接返回错误号。 pthread_rwlock_t类型 用于定义一个读写锁变量 1pthread_rwlock_init:初始化一把读写锁 int pthread_rwolck_init(pthread_rwlock_t*restrict rwlock,const pthread_rwlockattr_t*restrict attr); restrict关键字只用于限制指针所有修改该指针指向内存中内容的操作只能通过本指针来完成不能通过除本指针之外的其它变量或指针修改。 参数2attr表读写属性通常使用NULL表示默认属性 2销毁一把读写锁pthread_rwlock_destroy int pthread_rwlock_destroy(pthread_rwlock_t * rwlock); 3)以读方式请求加锁pthread_rwlock_rdlock int pthread_rwlock_rdlock(pthread_rwlock_t * rwlock); 4)以写方式请求加锁pthread_rwlock_rdlock int pthread_rwlock_wrlock(pthread_rwlock_t * rwlock); 5)解锁pthread_rwlock_unlock int pthread_rwlock_unlock(pthread_rwlock_t * rwlock); 6)非阻塞请求读锁:pthread_rwlock_tryrdlock int pthread_rwlock_tryrdlock(pthread_rwlock_t * rwlock); 7)非阻塞请求写锁:pthread_rwlock_trywrlock int pthread_rwlock_trywrock(pthread_rwlock_t * rwlock);
3读写锁示例多个线程对同一全局数据进行读写操作