zoukankan      html  css  js  c++  java
  • [System]几种同步方式

    1. 信号量 - Semaphore
      首先初始化信号量的值为N
      线程访问资源时,首先获取信号量:
        将信号量的值减1
        如果信号量的值小于0,则进入等待状态,否则继续运行。
      访问完资源后,线程释放信号量:
        将信号量的值加1
        如果信号值的值小于1,唤醒一个等待的线程。

    2. 互斥量 - Mutex
      资源仅同时允许一个线程访问。
      与信号量不同的是,信号量可以被任意线程获取与释放。即一个线程获取了信号量后,可由另一个线程释放。而互斥量要求哪个线程获取了互斥量,哪个线程就要负责释放这个锁。

    3. 临界区 - Critical Section
      与信号量、互斥量不同的是,信号量和互斥量是跨进程的,即一个进程创建了信号量或互斥量,其它进程都可以合法访问该锁。而临界区的作用范围仅限于本进程。
      除此之外,临界区与互斥量有相同的性质。

    4. 读写锁 - Read-Write Lock
      应用于读写的场合。即多线程可同时读取资源,但当有线程要修改资源时,需要进行同步。
      获取锁时,有两种方式:共享的(Shared)或独占的(Exclusive),获取的行为可总结为下表所示:

    读写锁状态 以共享方式获取 以独占方式获取
    自由 成功 成功
    共享 成功 失败
    独占 失败 失败

    5. 条件变量
      线程可以等待条件变量,一个变量可以被多个线程等待。
      线程可以唤醒条件变量,此时某个或所有等待此变量的线程都会被唤醒并继续运行。

  • 相关阅读:
    读取.robot文件写入excel文件中示例
    提示框、滚动条处理与JS的应用
    下拉框
    切换框架ifame
    层级定位
    定位一组元素
    Appium元素定位方法
    python+appium基本启动配置
    adb命令使用
    Python接口测试框架搭建
  • 原文地址:https://www.cnblogs.com/every2003/p/2450345.html
Copyright © 2011-2022 走看看