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

大丰市市城乡建设局网站微信扫二维码网页空白

大丰市市城乡建设局网站,微信扫二维码网页空白,住宅房做旅店是什么网站,专业网站建设咨原子操作和自旋锁的区别 相同点都是保护共享资源。 不同点在于#xff1a; 原子操作简单易用#xff0c;但只能做计数操作#xff0c;保护的东西太少。 自旋锁主要用于多核处理器。短时期的轻量级加锁#xff0c;加锁失败时原地打转、忙等待。避免了上下文调度和系统开销较… 原子操作和自旋锁的区别 相同点都是保护共享资源。 不同点在于 原子操作简单易用但只能做计数操作保护的东西太少。 自旋锁主要用于多核处理器。短时期的轻量级加锁加锁失败时原地打转、忙等待。避免了上下文调度和系统开销较小。 自旋锁 加锁步骤 查看锁的状态 如果锁是空闲的将锁设置为当前线程持有 存在问题 在没有CAS函数前多个线程同时执行这两个步骤会出错。 解决方案 CAS函数把这两个步骤合并为一条硬件级指令。第1步的比较锁状态和第2步的锁变量赋值将变为不可分割的原子指令硬件同步原语 CAS函数 自旋锁使用CPU提供的CASCompare And Swap函数在用户态代码中完成加锁与解锁操作。 PAUSE指令 自旋锁并不一直忙等待会与CPU紧密耦合它通过CPU提供的PAUSE指令减少循环等待时的耗电量对于单核CPU忙等待并没有意义此时它会主动把线程休眠。 自旋锁原理 设自旋锁为变量lock整数0表示锁是空闲状态整数pid表示线程ID。 CAS(lock, 0, pid)表示自旋锁的加锁操作 CAS(lock, pid, 0)表示自旋锁的解锁操作 自旋锁伪代码 while (true) {//因为判断lock变量的值比CAS操作更快所以先判断lock再调用CAS效率更高if (lock 0 CAS(lock, 0, pid) 1){return;}if (CPU_count 1 ){ //如果是多核CPU“忙等待”才有意义for(n 1; n 2048; n 1){//pause的时间应当越来越长for (i 0; i n; i){pause();//CPU专为自旋锁设计了pause指令}if (lock 0 CAS(lock, 0, pid)){return;//pause后再尝试获取锁}}}sched_yield();//单核CPU或者长时间不能获取到锁应主动休眠让出CPU } 自旋锁相关API 定义自旋锁 spinlock_t s_lock ; 初始化自旋锁 int spin_lock_init(spinlock_t *lock); 获取自旋锁函数 //加锁 void spin_lock(spinlock_t *lock) 尝试获取自旋锁函数 尝试获取一次获取成功返回“true”,获取失败返回“false”。程序继续往下执行 与上面的区别就是非阻塞 int spin_trylock(spinlock_t *lock) 释放自旋锁 void spin_unlock(spinlock_t *lock);
http://www.hkea.cn/news/14328451/

相关文章:

  • 网站建设的作用有哪些临沂高端网站建设
  • 石家庄做网站公司美术馆网站建设方案书
  • 百度做任务的网站公司网站制作汇报会
  • 深圳网站建设设计远洋国际一期官方网站建设
  • 和网站建设签合同网络营销八大工具
  • 网站优化网络公司wordpress本地后台打开卡住
  • html网站模板下载中网可信网站查询
  • 网站建设运营服务公司logo设计公司怎么去跟客户谈
  • 海口专业网站建设ui设计案例网站
  • 简单的明星个人网站建设论文哪个程序做下载网站好
  • 做网站销售怎么样如何自己搞个微信小程序
  • 携程网的网站推广方式seo好的外贸网站
  • 制作网页和做网站是一个意思吗网站推广常用方法有哪些
  • 深圳市建设工程造价管理站怀化组织部网站
  • 河南县wap网站建设公司网络营销公
  • 天津市城乡建设局网站模仿淘宝网站
  • 做搜狗网站优化点击软个人网站建立 学生
  • 网站开发验证码功能网站建设基础教程人教版
  • 从化网站开发公司网站在布局
  • 大连seo网站推广虚拟主机app
  • 企业网站排名技巧外贸知识最全外贸业务流程
  • 论坛网站前置审批企业网站联系我们
  • 网站的开发是使用什么技术东莞网站seo方法
  • c 网站开发教程广告牌免费设计在线生成
  • 外贸seo网站长沙设计网站建设
  • 石排镇网站建设成都网络营销搜索推广优势
  • 沈阳优化网站关键词长沙找工作包吃住6000
  • 上海网站制作策山西长治一企业
  • 有机蔬菜网站是如何建设手机应用商店app下载官方版
  • 互联网 网站建设9951026企业邮箱888