当前位置: 首页 > news >正文

上海手机网站制作鄂尔多斯建设局网站

上海手机网站制作,鄂尔多斯建设局网站,北京微网站建设设计服务公司,wordpress 图像主题读写锁#xff1a; 概念#xff1a;读写锁也叫共享-独占锁。当读写锁以读模式锁住时#xff0c;它是以共享模式锁住的#xff1b;当它以写模式锁住时#xff0c;它是以独占模式锁住的。#xff08;写独占#xff0c;读共享#xff09;。 读写锁使用场所#xff1a; …读写锁 概念读写锁也叫共享-独占锁。当读写锁以读模式锁住时它是以共享模式锁住的当它以写模式锁住时它是以独占模式锁住的。写独占读共享。 读写锁使用场所 读写锁非常适合对数据结构读的次数远大于写的情况可以同时读 特性 读写锁是“写模式加锁”时解锁前所有对该锁加锁的线程都会被阻塞 读写锁 是“读模式加锁”时如果线程以读模式对其加锁就会成功如果线程以写模式加锁会阻塞 读写锁是“读模式加锁”时既有试图以写模式加锁的线程也有试图以读模式加锁的线程。那么读写锁会阻塞随后的读模式加锁优先满足写模式加锁。读锁写锁并行阻塞写锁优先级高。 例如 线程A加写锁成功线程B请求读锁 -B锁阻塞等A解锁后B加锁成功 线程A加读锁成功线程B请求写锁 -B锁阻塞等A解锁后B加锁成功 线程A拥有读锁线程B请求B锁 -线程B加锁成功 线程A持有读锁然后线程B请求写锁然后线程C请求读锁 -线程B和C都阻塞 -当A释放锁之后B先获得锁C阻塞 -当B释放锁后C获得锁 线程A持有读锁然后线程B请求读锁然后线程C请求写锁 -线程B获得锁成功线程C要等AB释放锁后才能获得锁 线程A持有写锁然后线程B请求读锁然后线程C请求写锁 -线程B和C都阻塞 -当A释放锁之后C先获得锁B阻塞 -当C释放锁后B获得锁 读写锁相关函数 pthread_rwlock_t函数 函数描述:定义一把锁 pthread_rwlock_init函数 函数描述初始化读写锁 函数原型int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock,            const pthread_rwlockattr_t *restrict attr); 函数参数rwlock-读写锁  attr-读写锁属性传NULL pthread_relock_destroy函数 函数描述销毁锁 函数原型int pthread_rwlock_destroy(pthread_rwlock_t *rwlock); pthread_rwlock_rdlock函数 函数描述加读锁 函数原型int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock); pthread_rwlock_tryrdlock函数 函数描述尝试加读锁不会阻塞 函数原型int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock); pthread_rwlock_wrlock函数 函数描述加写锁 函数原型int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock); pthread_rwlock_trywrlock函数 函数描述尝试加写锁不会阻塞 函数原型int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock); pthread_rwlock_unlock函数 函数描述解锁 函数原型 int pthread_rwlock_unlock(pthread_rwlock_t *rwlock); 案例 创建3个线程写共享资源五个线程读共享资源 #includestdio.h #includestring.h #includestdlib.h #includesys/types.h #includeunistd.h #includepthread.h int num1; //定义一把锁 pthread_rwlock_t rwlock; void * thread_w(void *arg) {int n*(int *)arg;int i0;for(;i10;i){pthread_rwlock_wrlock(rwlock);num;printf([%d]write num[%d]\n,n,num);pthread_rwlock_unlock(rwlock);} } void *thread_r(void *arg) {int n*(int *)arg;pthread_rwlock_rdlock(rwlock);printf([%d]read num[%d]\n,n,num);pthread_rwlock_unlock(rwlock); } int main() {pthread_rwlock_init(rwlock,NULL);//初始化锁pthread_t thread[8];int arr[8];int i0;for(;i3;i){arr[i]i;pthread_create(thread[i],NULL,thread_w,arr[i]);}for(;i8;i){arr[i]i;pthread_create(thread[i],NULL,thread_r,arr[i]);}int j0;for(;j8;j){pthread_join(thread[j],NULL);}pthread_rwlock_destroy(rwlock);//销毁锁printf(final num[%d]\n,num);return 0; } 结果 可以看到五个读线程时可以同时进行的。
http://www.zqtcl.cn/news/743235/

相关文章:

  • 江西省城乡和住房建设部网站google play应用商店
  • 网站前台设计过程泰安千橙网络科技有限公司
  • 可以做来电名片的网站网站开发频道构架
  • 网站备案没通过不了宣传片拍摄的意义
  • 专业提供网站建设服务包括做解析视频网站违法莫
  • 天津工程建设协会网站wordpress 自由评论
  • 南同网站建设hr系统管理软件排名
  • 水果网店网站建设策划书做企业形象网站
  • 小清新博客网站软件公司有哪些部门
  • 企业网站托管一年多少钱想学电商运营在哪里学
  • 网站建设自评报告手机电商平台怎么做的
  • 安阳网站建设优化免费的免抠图素材网站
  • 网站主机有什么用seo网站课程
  • 网站关键词优化软件网站的二次开发
  • 网站建设技术服务费怎么入账杭州网站推广与优化
  • 咨询类网站建设方案书重庆360网络推广
  • 简单网站模板下载wordpress调用数据库字段
  • 万网空间最多放几个网站好的网站首页的特点
  • .net做网站安全吗wordpress取消邮件验证
  • 沈阳做网站推广唐山网站怎么做seo
  • 网站备案说主体已注销刷关键词指数
  • 学做网站教学百度网盘动软代码生成器 做网站
  • 长辛店网站建设手机评测网站
  • 网站建设公司选哪个好软件开发
  • 隐形眼镜网站开发的经济效益莘县网站开发
  • 开创集团网站建设如何在学校网站上做链接
  • 上海优秀网站设计百度投诉中心人工电话号码
  • 卖建材的网站有哪些跨境电商工具类产品的网站
  • 做毕业网站的周记网站开发项目书
  • 门户网站价格仿站工具下载后咋做网站