当前位置: 首页 > wzjs >正文

网站建设属于什么服务医药网站建设需要注意点

网站建设属于什么服务,医药网站建设需要注意点,网站开发调试工具,网站推广途径和要点管程定义 构成要素:管程定义了一个数据结构,以及能为并发进程在该数据结构上执行的一组操作。 数据结构:例如在多进程共享资源场景中,可代表共享资源状态的变量集合,像共享文件读写状态、共享缓冲区占用情况等。一组操…

 

管程定义

  • 构成要素:管程定义了一个数据结构,以及能为并发进程在该数据结构上执行的一组操作。
    • 数据结构:例如在多进程共享资源场景中,可代表共享资源状态的变量集合,像共享文件读写状态、共享缓冲区占用情况等。
    • 一组操作:针对共享数据的操作,如读取共享文件内容、向共享缓冲区写入数据。不仅能改变管程中数据状态,还能实现进程同步。比如控制写进程写入后读进程再读取,避免读不完整数据。
  • 功能作用
    • 同步进程:通过操作控制进程执行顺序,确保共享数据访问符合预期。
    • 改变数据:操作可改变管程中的数据,如写进程改变共享缓冲区占用状态。

语法描述

  • 管程声明Monitor monitor_name { 定义名为 monitor_name 的管程,是管理共享资源 “工具包” 的名称。
  • 共享变量说明share variable declarations; 声明管程内共享变量,记录共享资源状态,如共享缓冲区大小、已使用空间等。
  • 条件变量说明cond declarations; 声明条件变量,用于进程同步和等待。如缓冲区满时写进程在条件变量等待,待有空闲空间时被唤醒。
  • 公共过程声明public: 下的 void P1(……){……} 等过程,可被进程调用,包含对管程内数据结构操作代码,进程借此访问修改共享数据,且操作受管程机制控制,保证访问安全有序。
  • 管程主体{ initialization code; …… } 为管程主体,其中 initialization code; 是初始化代码,用于设置共享变量初始值、初始化条件变量等,如将共享缓冲区已使用空间初始化为 0 ,为后续操作做准备。

条件变量的定义与声明

  • 定义:条件变量是一种用于实现进程同步的机制。它可以让进程在某个特定条件满足之前进入阻塞状态,当条件满足时再被唤醒继续执行。
  • 声明:图中 condition x, y; 声明了两个条件变量 x 和 y 。这就好比设置了两个 “等待关卡”,进程可以在这些关卡处等待特定条件的发生。

条件变量的操作

  • 阻塞操作(wait)x.wait() 表示进程执行到该操作时会被阻塞。具体来说,进程会暂停执行,进入等待状态,直到另外一个进程调用 x.signal() 来唤醒它。这类似于一个人在等待公交车,在公交车到来(信号发出)之前,他只能一直等着。
  • 唤醒操作(signal)x.signal() 的作用是唤醒因调用 x.wait() 而被阻塞的另外一个进程。就好像公交车来了,司机鸣笛(发出信号)通知等待的乘客可以上车(唤醒进程继续执行)。

 

1. 管程的核心结构

管程是一种封装共享资源和同步操作的软件模块,其结构包含:

  • 共享数据:例如共享缓冲区、文件状态等,是多个进程竞争访问的对象。
  • 操作过程:也称为 “管程过程”,是一组用于操作共享数据的函数(如 insert()remove()),相当于对共享资源的 “访问接口”。
  • 初始化代码:在管程创建时执行,用于初始化共享数据的初始状态。
2. 进程访问管程的流程

当多个进程需要访问管程内的共享资源时:

  1. 进入队列(Entry Queue)
    所有试图进入管程的进程首先进入进入队列。管程在同一时间只允许一个进程执行其内部的操作过程,因此其他进程必须在此排队等待。
    类比:就像餐厅门口的等待区,顾客(进程)必须先在此等待,直到有空桌(管程可用)。

  2. 获取管程使用权
    当管程内的进程执行完毕并离开时,进入队列中的第一个进程将被唤醒,获得进入管程的权限。

3. 条件变量与等待队列

管程内部的条件变量(如 xy)用于处理更复杂的同步需求。当进程在执行过程中发现某个条件不满足时:

  • 执行 x.wait()
    进程会释放管程的使用权,并进入与条件变量 x 关联的等待队列(Queue for x)。此时,进入队列中的下一个进程将被允许进入管程。
    类比:顾客进入餐厅后发现没有干净餐具(条件不满足),于是回到 “缺餐具” 的等待区等待。

  • 执行 x.signal()
    当另一个进程改变了条件(例如清理了餐具),可以通过 x.signal() 唤醒在 x 队列中等待的进程。被唤醒的进程会重新进入进入队列,竞争管程的使用权。
    类比:服务员清理好餐具后,通知 “缺餐具” 等待区的顾客可以重新进入餐厅。

4. 两个关键队列的区别
队列类型作用触发场景
进入队列控制进程进入管程的顺序,确保同一时间只有一个进程在管程内执行操作。所有试图进入管程的进程都会先进入此队列。
条件变量队列当进程在管程内执行时,因某个条件不满足而被阻塞,进入与特定条件变量关联的队列。进程在管程内执行 x.wait() 时触发。
5. 示例场景

假设管程管理一个共享缓冲区,条件变量 empty 表示缓冲区为空,full 表示缓冲区已满:

  1. 生产者进程进入管程,发现缓冲区已满(full 条件成立),执行 full.wait(),进入 full 队列等待。
  2. 消费者进程进入管程,消费数据后缓冲区变为空,执行 empty.signal(),唤醒 empty 队列中的生产者进程。
  3. 被唤醒的生产者进程重新进入进入队列,等待获取管程使用权后继续执行。

    条件变量问题及处理方式

    • 存在的问题:在管程内可能存在不止 1 个进程。例如,当进程 P 调用 signal 操作唤醒进程 Q 后,会面临如何协调这两个进程后续执行顺序的问题。因为管程内的资源访问需要有序进行,否则可能导致数据不一致或其他错误。
    • 处理方式
      • Hoare 方式P 等待,直到 Q 离开管程或等待另一条件。这意味着 P 唤醒 Q 后,P 自身会进入等待状态,让 Q 先使用管程内的资源,直到 Q 完成操作离开管程,或者出现另一个满足条件的事件。
      • Hansen 方式Q 等待,直到 P 离开管程或等待另一条件。即 P 唤醒 Q 后,Q 不会立即执行,而是等待 P 离开管程,或者等到满足另一个特定条件时才开始执行。

    总结

    • 进入队列是管程的 “总入口”,确保互斥访问。
    • 条件变量队列是管程内部的 “子等待区”,用于处理特定条件下的进程阻塞。
    • wait() 让进程从管程进入条件队列,signal() 让进程从条件队列回到进入队列。

    文章转载自:

    http://sWQ3eW5N.bfcrp.cn
    http://BooVYhoM.bfcrp.cn
    http://mW7PZwKC.bfcrp.cn
    http://95ZN6fku.bfcrp.cn
    http://UjD6LZ32.bfcrp.cn
    http://hofs1p5j.bfcrp.cn
    http://Df32zTER.bfcrp.cn
    http://kyvl1jDM.bfcrp.cn
    http://naSu5lZu.bfcrp.cn
    http://GT8X3OEs.bfcrp.cn
    http://j9nPjpPh.bfcrp.cn
    http://nIj5B5y5.bfcrp.cn
    http://ItdvivFu.bfcrp.cn
    http://pPBTOj75.bfcrp.cn
    http://4IG4njH9.bfcrp.cn
    http://G3ZOl9nn.bfcrp.cn
    http://EwOjmsQ7.bfcrp.cn
    http://kdzKc4XU.bfcrp.cn
    http://lvc5kLqR.bfcrp.cn
    http://XWr5Uy0s.bfcrp.cn
    http://6J1wX5gY.bfcrp.cn
    http://dRDj9UQx.bfcrp.cn
    http://qHcy4mJb.bfcrp.cn
    http://wXorPNXm.bfcrp.cn
    http://PaRSfhn0.bfcrp.cn
    http://cpp23kcd.bfcrp.cn
    http://K3hPl9IO.bfcrp.cn
    http://7yJ7ZPVp.bfcrp.cn
    http://y9gR61bd.bfcrp.cn
    http://Zh37X1U4.bfcrp.cn
    http://www.dtcms.com/wzjs/714707.html

    相关文章:

  • 新材料 东莞网站建设展厅设计与施工公司
  • 2018网站开发高端品牌网站建设是什么
  • 青岛栈桥附近景点玩的顺序温州网站推广优化
  • 上海企业网站建设报价wordpress 数据库字段
  • 我们不仅仅做网站更懂得网络营销用阿里云怎么建网站
  • 江门有什么网站推广广州网站建设-信科分公司
  • 学习网站建设多少钱WordPress用云数据库
  • 如何设计响应式布局网站企信网企业信用信息系统贵州
  • 洛阳网站建设seo网站制作 服务
  • 做响应式网站代码好的平面设计灵感网站
  • 做网站全包旅游网站开发实训报告
  • 博物馆建设网站你第一个物流网站建设方案
  • 网站域名年龄查询优化网站排名工具
  • 郑州网站建设设计公司哪家好北京商场招商
  • 陕西江川建设有限公司公司网站国内ui做的好的网站
  • 把两个网站合并到一个网页新开发的聊天软件
  • 青岛seo结算做网站商城如何优化
  • 北京住房和建设部网站首页江西软件app开发公司
  • 网站建设期末试题正规的手机网站建设
  • seo引擎搜索网站关键词wordpress基础模板下载
  • 广东品牌网站建设公司wordpress 动态图形
  • 网站营销管理培训班python安卓app开发
  • 免费做链接的网站营销型网站建设集装箱液袋
  • 公司网站设计公司排名沈阳网站建设黑酷科技
  • 网站开发的就业方向asp网站打开速度慢
  • 如何使用阿里云建站电子商务网站建设实训总结
  • 做签证宾馆订单用啥网站深圳网站建设公司电话
  • 海口公司网站建设站长工具查询网站信息
  • 专业的销售网站小蝌蚪福导福航app
  • 网站建设本地还是外地知名网页设计师