互斥量和信号量的区别

2023-11-01

1. 互斥量用于线程的互斥,信号量用于线程的同步。

 

这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。

 

互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。 同步:是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。在大多数情况下,同步已经实现了互斥,特别是所有写入资源的情况必定是互斥的。少数情况是指可以允许多个访问者同时访问资源 以上区别是主要想记住的。

note:信号量可以用来实现互斥量的功能

 

2. 互斥量值只能为0/1,信号量值可以为非负整数。

也就是说,一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量可以实现多个同类资源的多线程互斥和同步。当信号量为单值信号量是,也可以完成一个资源的互斥访问。

 

3. 互斥量的加锁和解锁必须由同一线程分别对应使用,信号量可以由一个线程释放,另一个线程得到。

 

显然,同步是一种更为复杂的互斥,而互斥是一种特殊的同步。

也就是说互斥是两个线程之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要安照某种次序来运行相应的线程(也是一种互斥)!

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

互斥量和信号量的区别 的相关文章

  • Ubuntu 10.10下安装TFTP的步骤 tftp-hpa版本

    背景 由于想要在tq2440板子上用tftp下载kernel 所以要在自己的PC机的Ubuntu 10 10上安装tftp服务 所以就去网上找了些教程 但是很悲剧 按照那些教程去操作 结果还都是无法正常运行tftp服务 最后还是从一个外国人
  • Linux 磁盘与文件系统管理(鸟哥私房菜)

    本文来自 http vbird dic ksu edu tw linux basic 0230filesystem php 第八章 Linux 磁盘与文件系统管理 系统管理员很重要的任务之一就是管理好自己的磁盘文件系统 每个分割槽不可太大也
  • win10 Enable developer Mode

    经过漫长的安装过程 win10终于装上了vs2015 rc 写个小程序试试 结果提示 根据提示打开 设置 更新 for developer 据说应该有这么个界面 但是这个界面根本出不来 直接闪退的说 翻 MSDN 终于翻出了解决方法 htt
  • CF、SF、OF、ZF标志位

    没学汇编 这种题我真是做一道错一道 OF overflow flag 溢出标志位 溢出标志位 OF 1 表示带符号整数运算时结果发生溢出 对于无符号整数运算 OF没有意义 对于有符号数的溢出判断方式有 1 采用一位符号位 思想为 或 则为溢
  • Linux系统编程:多线程交替打印ABC

    引言 分享关于线程的一道测试题 因为网上基本都是Java的解决方法 决定自己写一篇来记录一下线程的学习 问题描述 编写一个至少具有三个线程的程序 称之为线程 A B 和 C 其中线程 A 输出字符 A 线程 B 输出字符 B 线程 C 输出
  • InfoQ视频直播分享报名:前贝尔实验室、Oracle架构师为你在线揭秘分布式平台内核...

    报名方式 关注InfoQ微信公众号 ID infoqchina 回复 InfoQ 即可观看在线直播技术分享 分享地点 u0026amp 时间 InfoQ直播微课堂将在熊猫 TV 网站播出 看腻了卖肉的女主播 来看看QCon 的明星讲师如何
  • python网络爬虫实战——实时抓取西刺免费代理ip

    参考网上高手示例程序 利用了多线程技术 Python版本为2 7 coding utf8 import urllib2 import re import threading import time rawProxyList checkedP
  • 通过源码包*.src.rpm定制开发rpm

    为什么80 的码农都做不了架构师 gt gt gt 1 基本流程 1 下载 安装相应的src rpm包 wget xxx src rpm rpm ivh xxx src rpm 这里的 安装 是指把xxx src rpm中的tar gz p
  • QT实现多线程,以及子线程调用主线程方法与变量

    实现思路 第一步需要将子线程声明为主线程的友元类 第二步是将主线程类对象的地址通过信号槽传递给子线程中创建的对象 使得子线程能访问主线程的数据的 1 子线程 displayresult h 头文件 伪代码 include tabwindow
  • 02Linux下C语言锁的学习之Linux下的读写锁

    02Linux下C语言锁的学习之Linux下的读写锁 概述 下面的锁的意思均是代表读写锁 读写锁的特性 1 若一把锁被一个线程以读方式锁住 当其它线程以读方式上锁的话 那么可以上锁成功 2 若一把锁被一个线程以写方式锁住 当其它线程以读或者
  • Linux常用命令记录

    文章目录 1 软件安装 安装软件 来自源服务器 安装 deb软件 来自本地 deb文件 修复依赖关系 卸载软件 2 文件 文件夹操作 删除文件夹 移动文件 文件重命名 3 程序查看 处理 进程查看 查看端口占用情况 强制终止程序 4 解压文
  • Ubuntu9.04太多乱码(中文不能正常显示)

    最近在使用Ubuntu9 04的过程中 发现有好多地方都出现乱码 其实是中文不能正常显示 现在把我所遇到的所有乱码问题集中一下 方便以后查阅参考 一 Flash乱码 在终端输入 sudo gedit etc fonts conf d 49
  • 由于回车符引起的shell错误

    今天弟弟写shell时出现一个错误 源代码如下 zip r 1 2 执行时出现错误 我也写了相同的语句 发现是可以执行的 把两个文件对比一看 差别在于 出错shell 正确shell 在linux下的回车是 n 在win下面的回车是 r n
  • 磁盘调度算法笔记和练习题

    磁盘调度算法 先来先服务FCFS 最短寻道时间优先SSTF 扫描调度SCAN 练习题 先来先服务FCFS 最短寻道时间优先SSTF 扫描调度SCAN 它是一次只响应一个方向上的请求 这个方向上的请求都响应完了 再掉头处理另一个方向上的 有点
  • CentOS Linux服务器安全设置

    转自 http www osyunwei com archives 754 html 引言 我们必须明白 最小的权限 最少的服务 最大的安全 所以 无论是配置任何服务器 我们都必须把不用的服务关闭 把系统权限设置到最小话 这样才能保证服务器
  • Java线程(Thread)生命周期的6种状态

    当线程被创建并启动以后 它既不是一启动就进入了执行状态 也不是一直处于执行状态 在线程的生命周期中 可能处于不同的状态 java lang Thread State 列举出了这6种线程状态 线程状态 导致状态发生条件 New 新建 线程刚被
  • 如何快速构建CMBD系统-glpi

    脚本后续更新及迭代将由kkitDeploy项目代替 https github com luckman666 kkitdeploy server 请大家持续关注kkitDeploy 一 CMBD系统构建步骤 起初 开发这套CMBD系统是为了帮
  • JAVA并发:线程安全与Synchorinzed

    1 什么是线程安全问题 线程的合理使用能够提升程序的处理性能 主要有两个方面 第一个是能够利用多核 cpu 以及超线程技术来实现线程的并行执行 第二个是线程的异步化执行相比于同步执行来说 异步执行能够很好的优化程序的处理性能提升并发吞吐量
  • C#实现FTP文件夹下载功能【转载】

    网上有很多FTP单个文件下载的方法 前段时间需要用到一个FTP文件夹下载的功能 于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码 实现的思路主要是通过遍历获得文件夹下的所有文件 当然 文件夹下可能仍然存在文件夹 这样就需
  • Linux(13):例行性工作排程

    例行性工程 听谓的排程是将工作安排执行的流程之意 Linux 排程就是透过 crontab 与 at 这两个东西 两种工作排程的方式 一种是例行性的 就是每隔一定的周期要来办的事项 一种是突发性的 就是这次做完以后就没有的那一种 at at

随机推荐

  • 一张图,看懂区块“链”

    可能很多人都觉得区块链是一个多么新颖的技术 其实不然 它不过是旧瓶装新酒 本身并没有创造新的技术 只是将几种已经成熟的技术进行组合 是融合性创新 而作为刚开始接触区块链 脑海没有一个具体概念 到底什么是区块链 区块链技术 落地 这是辽宁沈阳
  • Blog_system之ssm项目

    简述一下就是把之前的servlet项目改成了ssm项目 功能啥的都是一致的 详细可以去我的码云观看zqy zhang qinyang1 Gitee com
  • js 的 slice 和 splice

    js 的 slice 和 splice 都是数组的方法 slice 不改变原数组 splice 改变原数组 let arr 1 2 3 4 5 slice start number end number T start 和 end 表示索引
  • Java 类Servletrequest_java中servlet中有关HttpServletRequest的不理解

    首先你得知道servlet的工作原理 可以百度一下 如何写呢 首先需要新建一个web项目 然后新建一个servlet 注意一下mapping url就是访问的url也就是http 127 0 0 1 8080 项目名 你的mapping u
  • Android 11 Pixel 3XL Root教程

    Pixel 3 XL 安卓11正式版ROOT 所谓人生重在折腾 我又把安卓升级了 首先是升级至安卓11 无论是刷固件升级 还是用自带的 都会把Root刷掉 在升级完成后就可以开始折腾了 众所周知 twrp肯定不支持 只能用magisk来ro
  • jQuery on(绑定事件)前别忘了off(移除事件)

    废话不多说直接上代码 用到的自己运行看效果
  • 【转】对于编译程序时出现“Deprecated declaration ultrasonic_Init - give arg types”的解决办法...

    编译程序时出现 Deprecated declaration ultrasonic Init give arg types 中文释义 给定函数的参数的类型过时 解决办法 在函数void ultrasonic Init 声明和定义的时候定义参
  • <<视觉Transformer>>2021:Bottleneck Transformers for Visual Recognition

    本专栏只研究vision Transformer的原理 对实验不做过多研究 目录 摘要 一 介绍 二 相关工作 三 方法 四 实验 五 结论 摘要 我们提出了BoTNet 这是一个概念简单但功能强大的主干架构 它将自注意结合到多个计算机视觉
  • webpack文档(一)

    安装webpack npm webpack webpack cli g webpack cli是命令行工具 安装以后可以在命令行执行webpack的相关命令 g直接在全局安装的话后续可以在任意目录下使用webpack 全局安装仅适用于学习使
  • FLP不可能性(FLP impossibility)

    FLP不可能性 FLP impossibility FLP impossibility是一个定理 它证明了在分布式情景下 无论任何算法 即使是只有一个进程挂掉 对于其他非失败进程 都存在着无法达成一致的可能 FLP是Fischer Lync
  • android中的后退键——onBackPressed()的使用

    多网友不明白如何在Android平台上捕获Back键的事件 Back键是手机上的后退键 一般的软件不捕获相关信息可能导致你的程序被切换到后台 而回到桌面的尴尬情况 在Android上有两种方法来获取该按钮的事件 1 直接获取按钮按下事件 此
  • thrift.transport.TTransport.TTransportException: TSocket read 0 bytes报错解决

    一 问题描述 htrift版本 2 0 0 cdh6 0 1 hbase版本 1 2 0 cdh5 7 0 使用 thrift client with python 连接 hbase 报错 File C Users HP env1 lib
  • 求职宝典:职场新人赶紧卸掉“假成熟”

    你看得出我几岁吗 你没看错 这句话不是护肤品广告 而是众多职场中人的心声 职场中有个有趣现象 年长的羡慕年轻人的朝气与活力 不乏扮嫩一族 而新人们则竭力扮老 想使自己显得更成熟稳重些 在职场中更有分量 但 成熟 过度不一定是好事 入职太成熟
  • 强化学习之GYM库

    GYM库 gym基础 GYM库版本 0 18 0 导入gym环境 env gym make CartPole v0 查看Gym库注册的环境 from gym import envs env specs env registry all 所有
  • 信号通过相关器 Matlab,第五章 基带数字信号传输.ppt

    Matlab应用与通信仿真 第五章基带数字传输 什么是基带数字传输基带数字传输系统的构成 二进制信号传输 AWGN Additivewhitegaussiannoise 最佳接收机 Matlab应用与通信仿真 数字基带信号 数字PAM信号
  • Activiti6.0学习实践(1)-基础和部署

    工作流是现在信息化建设过程中经常用于解决业务流程管理问题的工具 因此工作流是一个比较专业化的话题 当前流行的工作流主要有JBPM和activiti 本系列学习实践的目的就是掌握activiti的部署 开发和应用 重要说明 本系列学习实践都是
  • 微信小程序WebSocket心跳检测与断来重连

    为什么要心跳检测 使用微信小程序WebSocket时 WebSocket在一定的时间没有进行通信就会断开连接 所以需要使用心跳检测 那么心跳检测是什么呢 心跳检测顾名思义就是和人心脏动一样 客户端在一定的时间间隔内给服务器发送信息 服务器再
  • template的特化

    在偏特化和特化上我学的并不好 傻傻分不清目前 也没搞懂这个的目的是什么 include
  • element踩坑记录:select下拉框回显不能切换及回显不显示label,显示value值

    1 select下拉框回显不能切换 这个问题是render不能刷新造成的
  • 互斥量和信号量的区别

    1 互斥量用于线程的互斥 信号量用于线程的同步 这是互斥量和信号量的根本区别 也就是互斥和同步之间的区别 互斥 是指某一资源同时只允许一个访问者对其进行访问 具有唯一性和排它性 但互斥无法限制访问者对资源的访问顺序 即访问是无序的 同步 是