码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 第二章 进程与线程 十六、信号量机制


    目录

    一、信号量机制的定义

    二、信号量的定义

    三、分类

    1、整型信号量

    (1)定义

    (2)例子

    2、记录型信号量

    三、实现方式

    1、在使用信号量时,需要定义信号量的初值。

    2、当一个进程或线程想要使用该资源时,需要调用wait操作来获取该资源的信号量。

    3、当一个进程或线程使用完该资源后,需要调用signal操作来释放该资源的信号量,使得其它进程或线程可以使用该资源。

    4、总的来说

    四、总结


    一、信号量机制的定义

    信号量机制是一种同步机制,用于协调多个进程或线程之间的访问资源。信号量通过计数器的方式来维护特定资源的可用性或被占用数目。

    二、信号量的定义

    信号量其实就是一个变量(可以是一个整数,也可以是更复杂的记录型变量),可以用一个信号量来表示系统中某种资源的数量。

    比如:系统中只有一台打印机,就可以设置一个初值为1的信号量。

    三、分类

    1、整型信号量

    (1)定义

    用一个整数型的变量作为信号量,用来表示系统中某种资源的数量。

    (2)例子

    2、记录型信号量

    三、实现方式

    1、在使用信号量时,需要定义信号量的初值。

    当信号量的值大于0时,表示资源可用;

    当信号量的值为0时,表示资源被占用。

    2、当一个进程或线程想要使用该资源时,需要调用wait操作来获取该资源的信号量。

    如果信号量的值大于0,表示资源可用,该进程或线程可以使用该资源,并将信号量减1。

    如果信号量的值为0,表示资源被占用,该进程或线程需要等待,直到信号量的值变为大于0,表示资源释放了。

    3、当一个进程或线程使用完该资源后,需要调用signal操作来释放该资源的信号量,使得其它进程或线程可以使用该资源。

    同时,调用signal操作会将信号量的值加1。

    4、总的来说

    信号量机制可以用于解决多个进程或线程之间的竞争问题,例如多个进程或线程同时访问一个文件,可以使用信号量机制来保证每个进程或线程都能够有序访问该文件,避免文件损坏或数据丢失。

    四、总结

    进程在申请资源时,若信号量小于等于0,则调用block进入堵塞态;

    当进程释放资源时,信号量加一,并且调用wakeup唤醒阻塞队列的对头元素。

  • 相关阅读:
    古瑞瓦特冲刺港交所上市:创下“多个第一”,获IDG资本9亿元投资
    精彩回顾|关系网络赋能银行数字化转型的应用与实践
    【路径规划】基于梯度下降算法求解自定义起点终点障碍路径规划问题附matlab代码
    HazelEngine 学习记录 - Shader Asset Files
    执行Hive查询时出现OOM
    LeetCode118.杨辉三角 | LeetCode119.杨辉三角Ⅱ
    为什么说“分布式架构”才是AR眼镜的未来
    【目标检测】Object Detection in 20 Years: A Survey
    ST2Vec: Spatio-Temporal Trajectory Similarity Learning in Road Networks
    Acwing/3359. 更多奇怪的照片
  • 原文地址:https://blog.csdn.net/icbbm/article/details/133242113
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号