`
justdoithz
  • 浏览: 48737 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

互斥锁vs共享锁vs自旋锁

阅读更多

共享锁:如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁,直到已释放所有共享锁。获准共享锁的事务只能读数据,不能修改数据。


排他锁:如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的锁,直到在事务的末尾将资源上的锁释放为止。获准排他锁的事务既能读数据,又能修改数据。

linux 自旋锁: 进程运行是会锁住自己所拥有的资源,不让其他进程来破坏(即自己锁住自己).但是如果是单处理器的系统,会出现其他的进程请求自己所拥有的资源,不断的查询资源是否可用,占用了CPU的资源,而自己也会应为竞争不到CPU而处于就绪,这种状态会一直保持.所以自旋锁一般不用于单处理器的系统.

分享到:
评论

相关推荐

    利用C++11原子量如何实现自旋锁详解

    实际上许多其他类型的锁在底层使用了自旋锁实现,例如多数互斥锁在试图获取锁的时候会先自旋一小段时间,然后才会休眠。如果在持锁时间很长的场景下使用自旋锁,则会导致CPU在这个线程的时间片用尽之前一直消耗在无...

    shared_spin_mutex:共享自旋互斥锁

    shared_spin_lock ... 这应该没有问题,因为此互斥对象适用于被动写入器-主动读取器方案。 最好情况下, lock_shared只是一个fetch_add 。 在最佳情况下, lock只是一个compare_exchange_weak 。

    详解Golang互斥锁内部实现

    go语言提供了一种开箱即用的共享资源的方式,互斥锁(sync.Mutex), sync.Mutex的零值表示一个没有被锁的,可以直接使用的,一个goroutine获得互斥锁后其他的goroutine只能等到这个gorutine释放该互斥锁,在Mutex结构中...

    linux中各种锁机制的使用与区别详解

    前言: 相信需要了解这方面的知识的小伙伴,已经基本对进程间通信和线程间通信有了一定了解。例如,进程间通信的机制之一:共享内存(在这里不做详解...POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER 来静态初始化互斥锁

    Python使用分布式锁的代码演示示例

    在计算机并发领域编程中总是会与锁打交道,锁又有很多种,互斥锁、自旋锁等等。 锁总是伴随着线程、进程这样的词汇出现,阮一峰有 一篇文章 对这些名词进行了简单易懂的解释。 我的理解是,使用线程、进程是为了实现...

    spin-rs:基于自旋的同步原语

    自旋 基于自旋的同步原语。 此板条箱在std::sync提供了版本。 由于同步是通过旋转完成的,因此这些原语适合在no_std环境中使用。 在决定使用spin之前,我们... 当此防护装置掉下时,互斥锁将再次变为可用。 extern c

    word源码java-sync:同步

    公平锁、非公平锁、读写锁、共享锁、互斥锁、自旋锁、偏向锁、轻量级锁、重量级锁 锁什么?锁代码块还是锁对象? 上锁就是改变对象的对象头 对象头是所有对象开头的公共部分。 对象头由两个词组成。 第一个词是Mark...

    深入浅出Linux设备驱动之并发控制

    在驱动程序中,当多个线程同时访问相同的资源时(驱动程序中的全局变量是一种典型的共享资源),可能会引发\"竞态\",因此...Linux内核中解决并发控制的最常用方法是自旋锁与信号量(绝大多数时候作为互斥锁使用)。

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第一部分)

    5.5 将自旋锁用作互斥锁原语 5.5.1 使用超时 5.5.2 使用基于自旋的等待 5.5.3 自旋和处理器出让 5.5.4 使用volatile修饰符 5.6 使用轻量级的手动重置事件 5.6.1 使用ManualResetEventSlim进行自旋和等待 5.6.2 使用...

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第2部分)

    5.5 将自旋锁用作互斥锁原语 5.5.1 使用超时 5.5.2 使用基于自旋的等待 5.5.3 自旋和处理器出让 5.5.4 使用volatile修饰符 5.6 使用轻量级的手动重置事件 5.6.1 使用ManualResetEventSlim进行自旋和等待 ...

    linux网络编程

    37POSIX线程(一) POSIX线程库相关函数 用线程实现回射客户/服务器 38POSIX线程(二) 线程属性 线程特定数据 39POSIX信号量与互斥锁 POSIX信号量相关函数 POSIX互斥锁相关函数 生产者消费者问题 自旋锁与读写锁...

    C#并行编程高级教程:精通.NET 4 Parallel Extensions中文(第3部分)

    5.5 将自旋锁用作互斥锁原语 5.5.1 使用超时 5.5.2 使用基于自旋的等待 5.5.3 自旋和处理器出让 5.5.4 使用volatile修饰符 5.6 使用轻量级的手动重置事件 5.6.1 使用ManualResetEventSlim进行自旋和等待 ...

    C++教程网《Linux网络编程》视频百度云地址

    39POSIX信号量与互斥锁 POSIX信号量相关函数 POSIX互斥锁相关函数 生产者消费者问题 自旋锁与读写锁介绍 40POSIX条件变量 条件变量 条件变量函数 条件变量使用规范 使用条件变量解决生产者消费者问题 41一...

    2018年C++教程网的linux网络编程视频共41集百度云下载链接.rar

    39POSIX信号量与互斥锁 POSIX信号量相关函数 POSIX互斥锁相关函数 生产者消费者问题 自旋锁与读写锁介绍 40POSIX条件变量 条件变量 条件变量函数 条件变量使用规范 使用条件变量解决生产者消费者问题 41一个简单的...

    Linux网络编程 视频 教程

    39POSIX信号量与互斥锁 POSIX信号量相关函数 POSIX互斥锁相关函数 生产者消费者问题 自旋锁与读写锁介绍 40POSIX条件变量 条件变量 条件变量函数 条件变量使用规范 使用条件变量解决生产者消费者问题 41一...

    C++教程网视频:linux网络编程

    39POSIX信号量与互斥锁 POSIX信号量相关函数 POSIX互斥锁相关函数 生产者消费者问题 自旋锁与读写锁介绍 40POSIX条件变量 条件变量 条件变量函数 条件变量使用规范 使用条件变量解决生产者消费者问题 41一...

    c++教程网的linux网络编程视频下载

    39POSIX信号量与互斥锁 POSIX信号量相关函数 POSIX互斥锁相关函数 生产者消费者问题 自旋锁与读写锁介绍 40POSIX条件变量 条件变量 条件变量函数 条件变量使用规范 使用条件变量解决生产者消费者问题 41一...

    [免费]2018年C++教程网的linux网络编程视频百度云下载链接.rar

    39POSIX信号量与互斥锁 POSIX信号量相关函数 POSIX互斥锁相关函数 生产者消费者问题 自旋锁与读写锁介绍 40POSIX条件变量 条件变量 条件变量函数 条件变量使用规范 使用条件变量解决生产者消费者问题 41一...

    透析Linux系统编程

     比如线程同步,不仅引出互斥锁 条件变量 自旋锁 读写锁使用方式,同时给出各个机制的应用场景 ;  比如 进程间通信,引出各个进程间通信的机制原理,给出各个进程间通信的应用场景;  比如 信号,给出信号在进程中...

    程序员考试刷题-COMP362---Operating-Systems:CSUCI2020秋季

    设计和实现需要通过许多同步机制(如自旋锁、互斥锁、信号量和监视器)共享计算机资源的应用程序 使用标准 C 库实现 C 语言程序实现通过操作系统调用与计算机平台交互的应用程序 使用 POSIX API 实现应用程序 使用 C...

Global site tag (gtag.js) - Google Analytics