码农知识堂 - 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唤醒阻塞队列的对头元素。

  • 相关阅读:
    如何生成钱包
    SUSE 助力某头部基金公司 PaaS 平台建设
    第一章:最新版零基础学习 PYTHON 教程(第十三节 - Python 条件和循环语句–Python 尝试异常)
    事 件 流
    npmjs官网(查询依赖包)
    Launcher folder、foldericon
    【LeetCode】31. 下一个排列
    基于微信小程序的高校餐厅食品留样管理系统设计与实现-计算机毕业设计源码+LW文档
    浅谈小程序开源业务架构建设之路
    Vue响应式数据的实现原理(手写副作用函数的存储和执行过程)
  • 原文地址:https://blog.csdn.net/icbbm/article/details/133242113
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号