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

第六章 设计基于锁的并发数据结构

  1. 序列化(serialization):多个线程轮流存取互斥元保护的数据,它们必须线性的而非并发的存取数据。
  2. 如何使得数据结构线程安全的基本原理:
  • 保证当数据结构不变性被别的线程破坏时的状态不被任何别的线程看到。
  • 注意避免数据结构接口所固有的竞争现象,通过为完整操作提供函数,而不是提供操作步骤。
  • 注意当出现例外时,数据结构是怎么样保证不变性不被破坏的。
  • 当使用数据结构时,通过限制锁的范围和避免使用嵌套锁,来降低产生死锁的机会。
在实行数据结构的并发存取时,设计者需要问问自己:
  • 锁的范围能否被限定,使得一个操作的一部分可以在锁外被执行?
  • 数据结构的不同部分能否被不同的互斥元保护?
  • 是否所有的操作需要同样级别的保护?
  • 数据结构的一个小改变能否在不影响操作语义情况下提高并发性的机会?
使用条件变量的线程安全队列的完整类定义:
 

 

转载于:https://www.cnblogs.com/zhanghu52030/p/10481165.html

相关文章:

  • Silverlight 3.0 中的 Local Connection
  • Java 获取目录以及子目录下的sql文件
  • IE中iframe标签显示在DIV之上的问题解决方案
  • SharePoint : 使用SPQuery对象时要注意的事项
  • Linux 上安装JDK
  • JUnit-4.13使用报java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing错误
  • vi和vim的基本介绍
  • 流程理解篇-测试篇
  • 简单贪心题(看最多的电视节目)
  • TestDriven.NET 2.0单元测试
  • Spring Boot 2.x (十二):Swagger2的正确玩儿法
  • windows环境下memcache服务器使用经验
  • DIVCNT23 - Counting Divisors
  • 新的博客, 新的里程
  • [学习笔记]Dsu On Tree
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • E-HPC支持多队列管理和自动伸缩
  • Hibernate最全面试题
  • react 代码优化(一) ——事件处理
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • ubuntu 下nginx安装 并支持https协议
  • WePY 在小程序性能调优上做出的探究
  • 笨办法学C 练习34:动态数组
  • 初识 beanstalkd
  • 从零搭建Koa2 Server
  • 从重复到重用
  • 第2章 网络文档
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 微信小程序实战练习(仿五洲到家微信版)
  • 一个SAP顾问在美国的这些年
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 06-01 点餐小程序前台界面搭建
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #stm32驱动外设模块总结w5500模块
  • (1)(1.11) SiK Radio v2(一)
  • (1)(1.9) MSP (version 4.2)
  • (20050108)又读《平凡的世界》
  • (42)STM32——LCD显示屏实验笔记
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (二十三)Flask之高频面试点
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (四)Controller接口控制器详解(三)
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • . Flume面试题
  • .net framework4与其client profile版本的区别
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .Net下的签名与混淆
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题