【Linux系统编程】同步和互斥的概念
00. 目录
文章目录
- 00. 目录
- 01. 概述
- 02. 互斥的概念
- 03. 同步的概念
- 04. 总结
- 05. 附录
01. 概述
现代操作系统基本都是多任务操作系统,即同时有大量可调度实体在运行。在多任务操作系统中,同时运行的多个任务可能:
- 都需要访问/使用同一种资源
- 多个任务之间有依赖关系,某个任务的运行依赖于另一个任务
这两种情形是多任务编程中遇到的最基本的问题,也是多任务编程中的核心问题,同步和互斥就是用于解决这两个问题的。
02. 互斥的概念
互斥:是指散步在不同任务之间的若干程序片断,当某个任务运行其中一个程序片段时,其它任务就不能运行它们之中的任一程序片段,只能等到该任务运行完这个程序片段后才可以运行。最基本的场景就是:一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。
03. 同步的概念
同步:是指散步在不同任务之间的若干程序片断,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。最基本的场景就是:两个或两个以上的进程或线程在运行过程中协同步调,按预定的先后次序运行。比如 A 任务的运行依赖于 B 任务产生的数据。
04. 总结
总之,同步是一种更为复杂的互斥,而互斥是一种特殊的同步。也就是说互斥是两个任务之间不可以同时运行,他们会相互排斥,必须等待一个线程运行完毕,另一个才能运行,而同步也是不能同时运行,但他是必须要按照某种次序来运行相应的线程(也是一种互斥)!因此互斥具有唯一性和排它性,但互斥并不限制任务的运行顺序,即任务是无序的,而同步的任务之间则有顺序关系。
05. 附录
5.1 参考: 同步和互斥
【Linux系统编程】同步和互斥的概念相关推荐
- linux多线程编程——同步与互斥
一. 为什么要用多线程技术? 1.避免阻塞,大家知道,单个进程只有一个主线程,当主线程阻塞的时候,整个进程也就阻塞了,无法再去做其它的一些功能了. 2.避免CPU空转,应用程序经常会涉及到RPC,数据 ...
- 嵌入式Linux系统编程学习之十三信号概念
信号是进程在运行过程中,由自身产生或由进程外部发过来的消息(事件),是硬件中断的软件模拟(软中断),它是 UNIX 进程通信最古老的方法.信号可以直接进行用户空间进程和内核进程之间的交互,内核进程 ...
- Linux系统编程【文件IO、进程、进程间通信、信号、线程、互斥】
linux系统编程 个人通过学习,手打了一份48000字的Linux系统编程的笔记,包含了[文件IO.进程.进程间通信.信号.多线程.互斥]等知识点,并给出了大量的代码案例对每个重要的知识点进行了代码 ...
- Linux系统编程(九)线程同步
Linux系统编程(九)线程同步 一.什么是线程同步? 二.互斥量 三.条件变量 pthread_cond_wait函数 pthread_cond_signal函数 生产者和消费者模型 一.什么是线程 ...
- Linux 系统编程 -进程概念篇
Linux系统编程-进程篇 冯诺依曼体系结构 冯诺依曼的两个重要思想 当代计算机的三级缓存 操作系统 操作系统的概念 操作系统的组成 操作系统作用 Linux下的操作系统体系 进程 进程概念 进程特性 ...
- linux 可定义信号数,Linux系统编程(20)——信号基本概念
信号及信号来源 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知 ...
- 【Linux】一步一步学Linux系统编程教程汇总(暂时暂停更新......)
00. 目录 文章目录 00. 目录 01. 概述和标准 02. 文件操作 03. 进程概念 04. 进程间通信 05. 多线程 06. 信号 07. 同步与互斥 08. 高级IO 09. 其它 10 ...
- 【Linux | 系统编程】Linux系统编程(文件、进程线程、进程间通信)
文章目录 Linux系统编程 文件IO open/close函数 read/write函数 文件描述符 阻塞.非阻塞 fcntl函数 lseek函数 传入传出参数 文件系统 文件存储 文件操作 sta ...
- Linux系统编程笔记
文章目录 1.Linux系统编程 2.文件IO 2.1 文件描述符 2.2 open 2.3 perror 2.4 close 2.5 write 2.6 read 2.7 remove 2.8 系统 ...
- 一文带你Linux系统编程入门
文件和文件系统 文件是linux系统中最重要的抽象,大多数情况下你可以把linux系统中的任何东西都理解为文件,很多的交互操作其实都是通过文件的读写来实现的. 文件描述符 在linux内核中,文件是用 ...
最新文章
- Spring MVC 返回json数据 报406错误 问题解决方案
- Python技巧-只用一行代码轻松实现图片文本识别
- SpringBoot高级-任务-异步任务
- Mysql Hunter
- imagej链接资源
- linux发布tomcat项目项目流程,linux下tomcat的配置及项目的部署流程
- 3-1机器学习中的分类与回归问题
- Node.js 初步学习总结
- 基于微信小程序的疫情防控平台设计与实现-计算机毕业设计源码+LW文档
- Markdown文件转pdf方法
- 瑞芯微Rockchips RK3368对比晶晨Amlogic S905
- 51单片机AD模数转换(SPI通信)
- python 字符串(二)
- 联想拯救者Legion Y7000P 2020款ubuntu20.04安装ros noetic与bloom-generate打包ros noetic为deb软件包
- Java加密体系结构(JCA)参考指南
- 小米手环4怎么使用_小米运动手环4使用说明
- 拥有一本CISP证书,我的工资会翻倍吗?
- 【时间函数】gettimeofday
- 最小二乘法的原理及python实现
- Android SurfaceView预览变形完美解决方法
热门文章
- 【Demo 0121】纯资源DLL中提取资源
- c语言 sdk,适用于 C 语言的 Azure IoT 设备 SDK
- 计算机信息安全与病毒6,信息安全与计算机病毒……毕业.docx
- 奇安信cdn配置教程_PicGo+jsDelivr+GitHub搭建免费cdn加速的图床
- python跟易语言的爬虫_新人Python,第一只爬虫,,我就只会re.findall,你咬我?
- 中英文切换_王者荣耀:模拟战奖励一览,新增中英文切换,李白第二套星元来袭...
- atoi() 与 itoa()函数用法
- webpack学习1-打包
- Sharepoint client model 中出现Cannot invoke HTTP DAV request. There is a pending query 的解决办法...
- Data Warehouse Hardware - DW硬件需求计算