美文网首页
关于线程中一些锁的概念以及扩展

关于线程中一些锁的概念以及扩展

作者: 含笑州 | 来源:发表于2019-03-05 16:53 被阅读0次

一.扩展

临界区:指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待(例如:bounded waiting 等待法),有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用,例如:semaphore。只能被单一线程访问的设备,例如:打印机

临界资源:是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式,实现共享的资源称作临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息队列,变量,数组,缓冲区等。诸进程间采取互斥方式,实现对这种资源的共享。

信号量(semaphore): 是一种更高级的同步机制,互斥锁可以说是semaphore在仅取值0/1时的特例。信号量可以有更多的取值空间,用来实现更加复杂的同步,而不单单是线程间互斥。

二.种类

1.自旋锁:是用于多线程同步的一种锁,线程反复检查锁变量是否可用。由于线程在这一过程中保持执行,因此是一种忙等待。一旦获取了自旋锁,线程会一直保持该锁,直至显式释放自旋锁。 自旋锁避免了进程上下文的调度开销,因此对于线程只会阻塞很短时间的场合是有效的。

2.互斥锁(Mutex):  是一种用于多线程编程中,防止两条线程同时对同一公共资源(比如全局变量)进行读写的机制。该目的通过将代码切片成一个一个的临界区而达成。

3.读写锁: 实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时既有读者又有写者。

4.条件锁:就是条件变量,当进程的某些资源要求不满足时就进入休眠,也就是锁住了。当资源被分配到了,条件锁打开,进程继续运行。

5.递归锁:是互斥锁上的一个变体。递归锁允许单个线程在释放锁之前多次获取锁。其他线程仍然被阻塞,直到锁的所有者释放锁的次数相同。递归的锁在递归迭代中主要使用,但也可以在需要单独获取锁的多个方法中使用。

6.分布锁:分布式锁在流程级别上提供互斥的访问。与真正的互斥锁不同,分布式锁不会阻塞进程或阻止进程运行。它只是报告当锁很忙时,让流程决定如何进行。

相关文章

  • 关于线程中一些锁的概念以及扩展

    一.扩展 临界区:指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个...

  • Java多线程技术总结-锁的使用

    我们前篇介绍了点关于线程创建的方式以及Thread相关api的介绍。这次我们说说线程中锁的应用。多线程中,数据同步...

  • Java高并发编程之-分布式锁

    什么是锁 ? 计算机软件开发里面有许多关于锁的概念。如数据库中的:共享锁,排他锁。或者是应用程序中的:线程锁,进程...

  • 多线程

    简单讲解了关于多线程的一些应用:线程进程的概念区别,定义多线程,多线程之间的通信,线程的死锁,以及线程的优先级。此...

  • 深入理解Java中的锁(一)

    Java中锁的概念 自旋锁 : 是指当一个线程在获取锁的时候,如果锁已经被其他线程获取,那么该线程将循环等待,然后...

  • Java synchronized 关键字原理学习

    在上一篇Java 线程 和 锁 基础知识已经介绍了Java中的线程和锁的一些基本概念,现在就来学习和了解下Java...

  • iOS 多线程--GCD

    前言:本文主要是关于GCD和NSOperation的具体使用,以及关于线程安全的实现. 线程以及进程的基本概念就不...

  • java线程中的锁

    java中的锁的概念 自旋锁: 是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后...

  • Java锁相关概念的简单理解

    Java中锁的概念 自旋锁:是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断...

  • Python_提高

    GIL全局解释器锁 描述Python GIL的概念, 以及它对python多线程的影响?编写⼀个 多线程抓取⽹⻚的...

网友评论

      本文标题:关于线程中一些锁的概念以及扩展

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