互斥与同步
来源:互联网 发布:方维p2p网贷系统源码 编辑:程序博客网 时间:2024/04/30 21:35
互斥和同步是两个紧密相关而又容易混淆的概念:
互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。
同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源,如“第一类读写者模型”。
线程同步的真实意思和字面意思恰好相反。线程同步的真实意思,其实是“排队”:几个线程之间要排队,一个一个对共享资源进行操作,而不是同时进行操作。
因此,关于线程同步,需要牢牢记住的第一点是:线程同步就是线程排队。同步就是排队。线程同步的目的就是避免线程“同步”执行。这可真是个无聊的绕口令。
关于线程同步,需要牢牢记住的第二点是 “共享”这两个字。只有共享资源的读写访问才需要同步。如果不是共享资源,那么就根本没有同步的必要。
关于线程同步,需要牢牢记住的第三点是,只有“变量”才需要同步访问。如果共享的资源是固定不变的,那么就相当于“常量”,线程同时读取常量也不需要同步。至少一个线程修改共享资源,这样的情况下,线程之间就需要同步。
关于线程同步,需要牢牢记住的第四点是:多个线程访问共享资源的代码有可能是同一份代码,也有可能是不同的代码;无论是否执行同一份代码,只要这些线程的代码访问同一份可变的共享资源,这些线程之间就需要同步。
- 互斥与同步
- 互斥与同步
- 互斥与同步
- 互斥与同步
- 互斥与同步
- 互斥与同步
- 同步与互斥
- 同步与互斥
- 同步与互斥
- 互斥与同步
- 互斥与同步
- 同步与互斥
- 进程同步与互斥
- 进程同步与互斥
- 多线程同步与互斥
- 同步与互斥概念
- 多线程同步与互斥
- 同步与互斥基本原理
- 让java程序在Linux后台运行
- Eclipse中安装SWT
- 分数加减法(P3979)
- 20.windbg-.dump(转储文件)
- js 进一法取正、四舍五入法取正、舍去法取正
- 互斥与同步
- 64位服务器安装64位oracle相关问题集
- System.currentTimeMillis() 一个计时方法
- digital output (alsa)相关说明
- 云计算:中兴通讯的“新引擎”
- 云计算是一种商业模式 未来将无处不在
- ARM要在2、3年内获得笔记本市场10%至20%
- 有意思
- 我常用的几个第三方 Python 库