美文网首页
计算机基础之锁的分类

计算机基础之锁的分类

作者: 绍清_shao | 来源:发表于2019-12-04 19:47 被阅读0次

内容

  • 锁出现的原因
  • 信号量(Semaphore)
  • 互斥量(Mutex)

锁出现的原因

避免多个线程同时读写同一个数据而产生不可预料的后果,我们需要将各个线程对同一个数据的访问同步。所谓同步,既是指在一个线程访问数据未结束时,其他线程不得对同一个数据进行访问。
同步的最常见方法是使用锁(Lock)

信号量

二元信号量(Binary Semaphore)是最简单的一种锁,只有两种状态:占用与非占用。它适合只能被唯一一个线程独占访问的资源。当二元信号量置为非占用状态时,第一个视图获取改二元信号量的线程会获得该锁,并将二元信号量置为占用状态,此后其他的所有视图获取该二元信号量的线程将会等待,直到该锁被释放。
对于允许多个线程并发访问的资源...

互斥量

互斥量对应的是互斥锁,互斥锁分为递归锁(recursive mutex)和非递归锁(non-recursive mutex)。

  • 递归锁
    递归锁也叫可重入锁(reentrant mutex)
    递归锁维护这一个Lock和一个counter变量
    一个线程可以用递归锁对资源多次加锁,直到这个线程加的锁都被释放,其他线程才能获得这个资源

  • 非递归锁
    非递归锁也叫不可重入锁(non-reentrant mutex)。如果线程已经对一个资源加上非递归锁后,没释放的前提下再次加锁会造成这个线程的阻塞,一直在等待这个锁的释放。

相关文章

  • 计算机基础之锁的分类

    内容 锁出现的原因 信号量(Semaphore) 互斥量(Mutex) 锁出现的原因 避免多个线程同时读写同一个数...

  • mysql锁与事物隔离级别

    锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制 锁分类 性能:乐观锁与悲观锁 操作:读锁和写锁(都属...

  • mysql-数据库锁理论概述

    什么是锁? 锁是计算机协调多个进程或线程并发访问某一资源的机制。 锁的分类 从数据操作的类型分为:读锁、写锁1)读...

  • 1.1_计算机基础

    1.计算机基础知识 1.1_计算机专业分类 1.2_计算机基础课程 1.计算机组成原理 2.软件工程 ...

  • 计算机语言与编码

    python基础1:计算机语言与编码 标签; python基础 计算机语言分类 机器语言 底层语言,运行速度最快,...

  • java并发与多线程(三):什么是锁

    计算机的锁分类有很多种,本书并不打算详细介绍每种锁,而是通过对java.util.concurrent(JUC)包...

  • java 中的锁 -- 偏向锁、轻量级锁、自旋锁、重量级锁

    基础 锁的类型 锁从宏观上分类,分为悲观锁与乐观锁 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能...

  • 数据库--锁

    基础 常见问题 数据库锁的分类 按锁的粒度划分,可分为表级锁、行级锁、页级锁(BDB引擎) 按锁的级别划分,可分为...

  • 锁机制

    基础知识之一:锁的类型 锁从宏观上分类,分为悲观锁与乐观锁。 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并...

  • 2019-07-23

    今天看了php基础之错误分类

网友评论

      本文标题:计算机基础之锁的分类

      本文链接:https://www.haomeiwen.com/subject/knulgctx.html