進程的同步和互斥

進程同步(synchronous)

?通俗理解:

就像在排隊買飯,一個一個來,前面的人不走,后面的人就不能干事
進程同步就是:多個進程之間需要協調,有先后順序一個進程要等另一個進程完成某件事后才能繼續

🎯舉個例子:

你和朋友一起搭積木:

  • 你負責搭第一層,

  • 他負責搭第二層,

  • 他必須等你第一層搭好后,才能開始。

這就是同步:有依賴,有先后,誰先做完誰后做都講究順序。


進程異步(asynchronous)

?通俗理解:

就像在食堂里點餐,你點好餐以后可以找座位坐著等,后廚在忙著做菜,你不用一直站著等,等做好了再通知你來取。
進程異步就是:大家互不等候,各干各的,有結果了再通知或交接。

🎯舉個例子:

你和朋友寫一篇報告:

  • 你寫前言和總結,他寫正文部分,

  • 寫的順序沒有依賴,

  • 寫完后合并就行。

這就是異步:不講順序,各自完成自己的部分即可。

進程互斥

為了實現對臨界資源的互斥訪問,同時保證系統整體性能,需要遵循以下原則:

  1. 空閑讓進。臨界區空閑時,可以允許一個請求進入臨界區的進程立即進入臨界區;

  2. 忙則等待。當已有進程進入臨界區時,其他試圖進入臨界區的進程必須等待;

  3. 有限等待。對請求訪問的進程,應保證能在有限時間內進入臨界區(保證不會饑餓);

  4. 讓權等待。當進程不能進入臨界區時,應立即釋放處理機,防止進程忙等待。

為什么要進程互斥

假設有兩個進程 A 和 B,都要向同一個打印機發送任務:

  1. A 發送打印內容“學生成績”

  2. B 發送打印內容“工資單”

如果沒有互斥控制,它們可能會同時操作打印機,結果打印出的內容可能是:

學生工分資單

內容完全錯亂!同樣的問題也可能發生在共享內存、全局變量、數據庫記錄等任何“共享資源”上。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/77934.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77934.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77934.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PDF處理控件Aspose.PDF指南:使用 Python 將 EPUB 轉換為 PDF

EPUB是一種流行的電子書格式,用于可重排內容,而PDF則廣泛用于固定版式文檔,非常適合共享和打印。如果您想使用 Python 將 EPUB 轉換為 PDF,Aspose.PDF for Python 提供了一個簡單可靠的解決方案。在本教程中,我們將向您…

day4-小白學習JAVA---開發軟件_Scanner鍵盤錄入_Random隨機數_流程控制語句

開發軟件_Scanner鍵盤錄入_Random隨機數_流程控制語句 一、開發軟件idea(MAC版)1、軟件安裝-安裝社區版2、中英文設置3、保存時格式化配置4、注釋和代碼對不齊5、idea快捷鍵 二、鍵盤錄入--Scanner1、next和nextInt2、next和nextLine區別 三、Random隨機…

MySQL基本查詢與數據操作全面解析

目錄 1. CRUD操作概述 2. Create操作詳解 2.1 表的創建 2.2 單行數據插入 2.3 多行數據插入 2.4 插入沖突處理 3. Retrieve操作詳解 3.1 基礎查詢 全列查詢(慎用) 指定列查詢 表達式查詢 結果去重 3.2 條件查詢(WHERE子句&#…

01.Python代碼Pandas是什么?pandas的簡介

01.Python代碼Pandas是什么?pandas的簡介 提示:幫幫志會陸續更新非常多的IT技術知識,希望分享的內容對您有用。本章分享的是pandas的使用語法。前后每一小節的內容是存在的有:學習and理解的關聯性,希望對您有用~ pyth…

(8)ECMAScript語法詳解

本系列教程目錄:Vue3Element Plus全套學習筆記-目錄大綱 文章目錄 第2章 ECMAScript2.1 ECMAScript 的發展歷史2.2 什么是ES62.3 ES6語法新特性2.3.1 變量聲明let2.3.2 常量聲明2.3.3 模板字符串2.3.4 函數默認參數2.3.5 箭頭函數2.3.6 對象初始化簡寫2.3.7 解構2.3…

Android JNI開發中頭文件引入的常見問題與解決方案?,提示:file not found

Android JNI開發中頭文件引入的常見問題與解決方案 問題場景(新手易犯錯誤) 假設你在開發一個JNI項目,想要實現一個線程安全的隊列(SafeQueue),于是直接在cpp目錄下創建了safe_queue.h文件,并開…

C++靜態與動態聯編區別解析

在 C++ 中,靜態聯編(Static Binding)和動態聯編(Dynamic Binding)是兩種不同的函數調用綁定機制,核心區別在于確定函數調用的時機和多態性的支持。以下是詳細解釋: 1. 靜態聯編(Static Binding) 定義:在編譯階段確定函數調用與具體實現的關系。特點: 由編譯器直接確…

如何批量為多個 Word 文檔添加水印保護

在日常辦公中,Word文檔添加水印是一項重要的操作,特別是在需要保護文件內容的安全性和版權時。雖然Office自帶了添加水印的功能,但當需要一次性給多個Word文檔添加水印時,手動操作顯得非常繁瑣且低效。為了提高效率,可…

【愚公系列】《Python網絡爬蟲從入門到精通》057-分布式爬取中文日報新聞數據

🌟【技術大咖愚公搬代碼:全棧專家的成長之路,你關注的寶藏博主在這里!】🌟 📣開發者圈持續輸出高質量干貨的"愚公精神"踐行者——全網百萬開發者都在追更的頂級技術博主! &#x1f…

Linux系統編程 day9 SIGCHLD and 線程

SIGCHLD信號 只要子進程信號發生改變&#xff0c;就會產生SIGCHLD信號。 借助SIGCHLD信號回收子進程 回收子進程只跟父進程有關。如果不使用循環回收多個子進程&#xff0c;會產生多個僵尸進程&#xff0c;原因是因為這個信號不會循環等待。 #include<stdio.h> #incl…

微信小程序拖拽排序有效果圖

效果圖 .wxml <view class"container" style"--w:{{w}}px;" wx:if"{{location.length}}"><view class"container-item" wx:for"{{list}}" wx:key"index" data-index"{{index}}"style"--…

hadoop三大組件的結構及各自的作用

1 HDFS 1.1功能 HDFS 是 Hadoop 的分布式文件系統&#xff0c;用于存儲和管理海量數據。它具有高容錯性、高吞吐量和可擴展性&#xff0c;能夠在多個節點上存儲和管理大規模數據 1.2架構&#xff1a;采用主從架構&#xff0c;由一個 NameNode 和多個 DataNode 組成。NameNode…

解決jupyter notebook修改路徑下沒有c.NotebookApp.notebook_dir【建議收藏】

文章目錄 一、檢查并解決問題二、重新設置默認路徑創作不易&#xff0c;感謝未來首富們的支持與關注&#xff01; 最近在用jupyter notebook編寫代碼時&#xff0c;更新了一下Scikit-learn的版本&#xff0c;然后重新打開jupyter notebook的時候&#xff0c;我傻眼了&#xff0…

MCP Host、MCP Client、MCP Server全流程實戰

目錄 準備工作 MCP Server 實現 調試工作 MCP Client 實現 MCP Host 配置 第一步:配置支持 function calling的 LLM 第二步:添加MCP Server 一般有兩種方式,第一種json配置,第二種直接是Command形式,我這里采用Command形式 第三步:使用MCP Server 準備工作 安裝…

4.21—4.22學習總結 JavaWeb:HTML-CSS

Web&#xff1a;能夠通過瀏覽器訪問到的網站。 Web標準&#xff1a; HTML&#xff1a; vscode中進行注釋的快捷鍵為ctrl斜線/ h1的字體最大&#xff0c;依次遞減&#xff0c;只存在h1—h6。 超鏈接&#xff1a; 設置字體顏色&#xff1a; 方式三寫一個css文件&#xff0c;將方…

Kaamel Agent: 基于EU AI Act的AI影響評估(AIIA)

1. 引言&#xff1a;安全視角下的AI監管 隨著人工智能技術的快速發展和廣泛應用&#xff0c;AI系統在為社會帶來創新和效率的同時&#xff0c;也引發了諸多關于安全、隱私和合規的擔憂。在這一背景下&#xff0c;全球范圍內涌現出多種監管框架和標準&#xff0c;旨在確保AI系統…

Mongodb分布式文件存儲數據庫

文章目錄 一、MongoDB 簡介基本信息特點內部組件 二、MongoDB 部署1. 安裝依賴2. 解壓部署并配置環境變量3. 修改配置文件以及啟動服務4.數據庫權限管理 三、MongoDB 管理1. 角色權限2. 操作命令用戶管理命令常用命令&#xff08;Mongo4.2.8&#xff09;數據庫相關用戶相關集合…

麒麟V10安裝MySQL8.4

1、下載安裝包 wget https://cdn.mysql.com//Downloads/MySQL-8.4/mysql-8.4.5-1.el7.x86_64.rpm-bundle.tar2、解壓 mkdir -p /opt/mysql tar -xvf mysql-8.4.5-1.el7.x86_64.rpm-bundle.tar -C /opt/mysql3、安裝MySQL 3.1、卸載mariadb rpm -qa | grep mariadb rpm -e m…

Unreal如何使用后處理材質實現一個黑屏漸變效果

文章目錄 前言相機后期處理材質創建材質相機設置動態修改FadeAlpha參數使用示例最后前言 UE5 開發VR ,如何通過PostProcess輕松實現黑屏漸變效果 最簡單的辦法,其實是使用一個半球形模型,遮擋住相機,然后控制這個半球形遮罩的顏色透明度,至少Unity中默認的Tunneling是這么…

其它生成式(對比列表生成式)

一、字典生成式&#xff1a; # keys[name, age, gender] # dic{key:None for key in keys} # print(dic) items[(name, Tom), (age, 18), (gender, male)] res{k:v for k,v in items if k ! gender} print(res) 二、集合生成式&#xff1a; keys[name, age, gender] set1{ke…