自旋锁和互斥锁
2016-03-23 18:09
176 查看
自旋锁(Spin Lock):自旋锁是锁中的一种,是对临界资源访问的一种安全设置,为什么称之为自旋,是因为它在无限循环的去申请资源直到临界资源解锁。自旋锁不会引起睡眠(sleep),因为它需要不停地自我旋转,每转一圈就发送一次申请,直到申请被同意才停止,因为在不断的循环,所以要一直占用一个CPU,一般用于多和处理器的计算机。虽然他的运行效率高,但只是对应于短作业,一点长时间申请得不到回复就会大大降低cpu的效率,所以只适用于短作业。
互斥锁(Mutex):互斥锁是一种很常用的锁,在双核cpu上两个线程访问临界资源,线程A先访问并给临界资源加锁,这时线程B也要访问这个资源,但是当线程B申请锁的时候因为临界资源已经被线程A加了锁,线程B申请不到锁,(如果是自旋锁,线程B就会一直循环申请直到线程A释放锁)线程B会阻塞住,并进入等待队列,原先线程B占用的CUP就会去运行其他的线程,提高系统的运行效率。
互斥锁(Mutex):互斥锁是一种很常用的锁,在双核cpu上两个线程访问临界资源,线程A先访问并给临界资源加锁,这时线程B也要访问这个资源,但是当线程B申请锁的时候因为临界资源已经被线程A加了锁,线程B申请不到锁,(如果是自旋锁,线程B就会一直循环申请直到线程A释放锁)线程B会阻塞住,并进入等待队列,原先线程B占用的CUP就会去运行其他的线程,提高系统的运行效率。
相关文章推荐
- sha加密算法
- 静态成员static
- Android控件之Toolbar + DrawerLayout的使用
- java动态代理
- c++ 作用域为类的常量
- AFNetWorking 3.0 的基本用法
- Docker容器内信息获取和命令执行
- OGNL表达式语言
- linux查询系统版本
- Fentury: Personal Finance Manager(理财)
- 大公司里怎样开发和部署前端代码?
- 前端性能监控方案window.performance 调研(转)
- codeforces300C. Beautiful Numbers
- kvc简单的用法
- MySQL数据库事务简介
- caffe+cuda7.0+opencv3.0.0+mkl ubuntu14.04配置
- shell 计算代码运行时间
- libev c++ example - 2
- 换分币
- C++的64位整数(转)