嵌入式面试八股文(四)·同步和互斥、同步和异步、同步阻塞和同步非阻塞、异步阻塞和异步非阻塞的详细分析

news2024/11/27 16:29:33

目录

1.  同步和互斥

1.1  同步

1.2  互斥

1.3  总结

2.  同步和异步

2.1  同步

2.2  异步

3.  阻塞和非阻塞

3.1  阻塞

3.2  非阻塞

4.  同步阻塞和同步非阻塞

4.1  同步阻塞

4.2  同步非阻塞

4.3  同步阻塞和同步非阻塞的区别

5.  异步阻塞和异步非阻塞

5.1  异步阻塞

5.2  异步非阻塞

5.3  异步阻塞和异步非阻塞的区别


1.  同步和互斥

1.1  同步

定义:同步是指在执行任务时,通过某种机制来协调不同任务的行为,确保它们以正确的顺序和条件进行。简单来说,就是使得一个任务的执行进度能够与另一个任务的状态保持一致。

例子:通俗点解释,如果你去包子店想买包子,但店里暂时没有包子,你就需要等待店主做包子。这种等待就是一种同步行为,确保你在包子准备好之前不能买到包子。

又例如,你需要进行传感器数据采集,一个采集数据的传感器任务,一个处理数据的任务,你想要处理数据,则需要等待传感器先去采用数据,这种等待的行为就称为同步行为。

1.2  互斥

定义:互斥是指确保在任何时刻只有一个任务能够访问共享资源。它防止了多个任务同时访问共享资源,从而避免数据冲突或资源争用的问题。

例子:厕所(临界资源或者说是共享资源),人上厕所(执行的任务)
        为了保证资源的合理使用,互斥机制确保在任何时刻只有一个人可以使用厕所。当一个人正在使用厕所时,其他人必须等待。

1.3  总结

        同步是一种更为复杂的互斥,而互斥是一种特殊的同步。

例子:还是以上厕所为例。

           厕所(临界资源或者说是共享资源),甲、乙、丙、丁四个人上厕所(执行的任务)

同步:相当于我给你规定了上厕所的顺序,甲、乙、丙、丁(任务)排队上厕所(共享资源),是有顺序的,例如甲执行完才是乙,乙执行完才是丙,丙执行完才是丁,你需要按照我给你排的顺序上厕所。

互斥:也是甲、乙、丙、丁(任务)排队上厕所(共享资源),不过并没有顺序,互斥就保证你们四个人就只能一个人到厕所里。但是你们谁先上我不管,我就保证你们在同一个时间内,只有一个人在厕所里(使用共享资源)。

2.  同步和异步

2.1  同步

定义:在同步操作中,任务按顺序执行,每一步都等待前一步完成。同步就是顺序执行,执行完一个再执行下一个,需要等待、协调运行。

例子:在排队买咖啡时,你需要等前面的人完成付款和取货后,才能轮到你进行购买。

2.2  异步

定义:异步和同步是相对的,异步就是彼此独立,在等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。

例子:你在家做饭的同时,网上订购了一本书。书的送货过程在后台进行,而你可以继续做饭,不需要等书送到后再继续烹饪。

3.  阻塞和非阻塞

3.1  阻塞

定义:主程序调用读取文件的函数时,会停下来等待文件读取完成。程序在这段时间内无法继续执行其他任务,直到读取操作完成。

例子:想象你正在等一辆公共汽车。在车到站之前,你只能站在站台上等,无法做其他事情。直到汽车到达并带你到目的地,你才能离开站台,继续进行其他活动。这就类似于阻塞操作,程序在等待数据完成之前无法继续执行其他操作。

3.2  非阻塞

定义:主程序调用读取文件的函数时,函数立即返回,主程序可以继续执行其他任务。文件读取将在后台进行,当数据准备好后,程序会处理结果或检查状态。

例子:你正在用手机查看社交媒体,同时在厨房里准备晚餐。你用手机发送了一条消息,然后手机立即返回到主界面,让你继续做晚餐,不必等待消息被送达或收到回复。消息发送在后台进行,你可以继续做其他事情。这就类似于非阻塞操作,程序在等待某个任务完成的同时,可以继续执行其他任务。

4.  同步阻塞和同步非阻塞

4.1  同步阻塞

定义:发送方发出请求后一直等待(同步),接收方开始读取文件,如果不能马上得到读取结果就一直等,直到获取读取结果再响应发送,等待期间不可做其他操作(阻塞)。

例子:你在ATM机上输入取款请求(发送方发出请求),ATM机处理取款请求(接收方开始读取文件),在ATM机处理取款请求的过程中,你必须等到现金被取出并完成交易,在等待过程中,你不能进行其他操作,比如重新插卡或者进行查询,直到取款完成,你才可以继续进行其他操作。

4.2  同步非阻塞

定义:发送方发出请求后一直等待(同步),接收方开始读取文件,如果不能马上的得到读取结果,就立即返回,接收方继续去做其他事情。此时并未响应发送方,发送方一直在等待。直到IO操作(这里是读取文件)完成后,接收方获得读取结果响应发送方,接收方才可以进入下一次请求过程。(实际不应用)

例子:你在浏览器上加载一个网页,网页的资源(如图片、视频)需要时间来加载。在加载资源期间,浏览器可能显示占位符或者加载动画,同时允许你进行其他操作(如浏览其他网页或滚动页面),当资源加载完成后,浏览器会更新页面显示实际内容。你在等待期间可以继续浏览或进行其他操作,直到资源完全加载。

4.3  同步阻塞和同步非阻塞的区别

同步阻塞:发送方在发送请求后必须等待接收方完成处理并返回结果,期间发送方不能进行其他操作。请求和等待结果的过程中发送方完全被阻塞,不能进行其他操作。

同步非阻塞:发送方在发送请求后,会一直等待结果,但如果接收方无法立即提供结果,会返回一个状态或占位符,允许发送方在等待期间执行其他操作。请求后发送方仍然等待结果,但可以在等待期间进行其他操作,不完全被阻塞。

5.  异步阻塞和异步非阻塞

5.1  异步阻塞

定义:发送方发出请求后,不等待响应,继续其他工作(异步),接收方读取文件如果不能马上得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他操作(阻塞)。(实际不应用)

例子:你在餐馆点了外卖,并且在等待餐点准备好。在这个过程中,你可以做其他事情,比如玩手机或阅读书籍。

        点餐后,你不需要在餐点准备期间一直等待,餐馆会在后台准备你的餐点。

        当餐点准备好后,你需要去取餐。此时,你可能会在餐馆里排队等候取餐,这时你的时间会被“阻塞”,直到你拿到餐点为止。取餐过程中的等候使得你不能做其他事情,直到拿到餐点为止。

5.2  异步非阻塞

定义:发送方发出请求后,不等待响应,继续其他工作(异步),接收方读取文件如果不能马上得到结果,也不等待,而是马上返回取做其他事情。当IO操作(读取文件)完成以后,将完成状态和结果通知接收方,接收方在响应发送方。(效率最高)

例子:你预约了一个医生的时间,提交了预约请求。提交请求后,你可以继续做其他事情,如上班、购物等。

        预约请求是在后台处理的,你不需要等待预约结果而继续进行日常活动。

        当医生的预约确认邮件或短信到达时,你可以查看确认信息,而在此之前你已经不需要等待或阻塞其他活动。你可以继续执行其他任务,直到收到通知并处理预约确认。

5.3  异步阻塞和异步非阻塞的区别

异步阻塞:请求是异步的,发送方在请求处理期间可以继续执行其他操作,但在处理最终结果时可能会出现阻塞。

异步非阻塞:请求和结果处理都是异步的,发送方可以继续执行其他操作,处理结果时也不会阻塞程序的其他部分

千题千解·嵌入式工程师八股文详解_时光の尘的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2062793.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于微信小程序的学生宿舍管理系统设计与实现

宿舍管理 | 学生宿舍 | 学生宿舍管理 | 学生宿舍管理小程序 博主介绍:✌️大家好!我是Coder-coco,一名专注以理论为基础、实战为主的技术博主,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目&a…

使用html2canvas将网页导出为图片

1. 安装html2canvas npm install html2canvas或者 pnpm install html2canvas2. 简单使用案例 ref:Vue 3 的 ref 用来引用 DOM 元素。我们通过 exportContent 引用需要导出的 DOM 元素。 html2canvas:html2canvas 库会将指定的 DOM 元素渲染为画布&…

C++发送邮件:如何稳定实现邮件发送功能?

C发送邮件安全性探讨!C编程中发送邮件的技巧? 邮件发送功能是许多应用程序的重要组成部分,无论是用于通知用户,还是用于自动化报告。AokSend将探讨如何在C环境中稳定地实现邮件发送功能,确保邮件能够可靠地到达收件人…

深入解析:Redis与Nacos分布式锁在业务中的具体应用

时间:2024年08月22日 作者:小蒋聊技术 邮箱:wei_wei10163.com 微信:wei_wei10 音频地址:https://xima.tv/1_HBPYxC?_sonic0 希望大家帮个忙!如果大家有工作机会,希望帮小蒋内推一下&#x…

传输协议在文件传输中面临哪些挑战

文件传输是指通过网络或互联网连接将文件从一台计算机复制或移到另一台计算机的过程。这样即可在本地和远程的不同用户和/或计算机之间共享、传输或发送文件;文件传输通常受通信协议约束,通信协议是一组规则,用来规定如何在网络中的计算机之间…

在Chatbox(桌面ai工具)中使用SiliconCloud

在Chatbox中使用SiliconCloud 一,前言 "随着人工智能技术的发展,AI已经成为我们日常生活和工作中的重要组成部分。Chatbox是其中一种流行的桌面AI工具,它可以帮助用户进行AI对话和AI绘画。SiliconCloud则是一个AI平台,它提…

vue,div实现拖动,并给新位置

鼠标方上去随意拖动到其它位置 <template><div style"margin: 50px;"><div class"dade draggable-div" mousedown"startDrag($event)" mouseup"stopDrag" mousemove"drag($event)"style"width: 200px…

【JavaEE初阶】TCP协议

&#x1f332;TCP协议的概念 TCP&#xff08;TransmissionControlProtocol 传输控制协议&#xff09;是一种面向连接的、可靠的、面向字节流&#xff0c;双全工的传输层通信协议。 这几个特点在我们前面写得TCP服务器和客户端的搭建中&#xff0c;代码能够直观的感受到&#…

13 跳转控制语句(break、continue、goto),循环的加强练习

目录 1 break 1.1 介绍 1.2 流程图 1.3 在循环中使用 break 1.4 注意事项 1.5 案例&#xff1a;判断质数 2 continue 2.1 介绍 2.2 流程图 2.3 在循环中使用 continue 2.4 案例&#xff1a;逢七过游戏 3 goto 语句 3.1 介绍 3.2 基本语法 3.3 流程图 3.4 基本使…

开学必备清单来啦!大学好物合集推荐!每一个都能帮你提升幸福感

随着开学季的到来&#xff0c;好多学生都在忙着准备各类学习与生活必需品&#xff0c;以迎接新的大学生活到来。以下是一些开学季必备的好物推荐&#xff0c;每一个都很实用&#xff0c;可以帮你提升学习和生活的幸福感&#xff01; 1、西圣电容笔 一句话推荐&#xff1a;公认…

Windows 11 24H2 终于允许多个应用程序同时使用摄像头

Windows 11&#xff08;以及任何旧版本的 Windows&#xff09;均不允许多个摄像头应用程序访问网络摄像头硬件&#xff0c;除非使用第三方应用程序创建虚拟摄像头设置。这种情况将在未来发布的 Windows 11 版本 24H2 中得到改变&#xff0c;该版本将增加一项可选功能&#xff0…

nginx 添加第三方nginx_upstream_check_module 模块实现健康状态检测

安装插件 下载 链接&#xff1a;https://pan.baidu.com/s/1iTPEmu_hCHYhDyaVDDTsVg?pwdvaw8 提取码&#xff1a;vaw8 安装依赖 yum install pcre pcre-devel yum -y install make gcc-c gcc编译安装 $ nginx -V #此处省略了很多模块&#xff0c;只是为了看清而已 ... co…

轻松掌握LLM三角原则:简化大模型应用开发流程的理解指南

不少朋友偷偷问我&#xff1a;“什么是LLM的三角原则&#xff1f;”今天就给大家仔细讲讲构建LLM应用的三角原则。这套原则其实不复杂&#xff0c;由“31”(一范式三原则)个基础组成&#xff0c;适合任何团队来实践。 说到以LLM为核心的应用&#xff0c;有不少人以为是高大上的…

【考研数学】二战能不看课,直接刷1000题或者李林880吗?

二战数学&#xff0c;刷题的时间肯定要大于看课的时间&#xff0c;同时听课要注意&#xff1a; 1、针对问题听课&#xff0c;听课的时候你要带有目的性&#xff0c;如果毫无目的&#xff0c;那么这节课你能获得的东西就十分优先&#xff0c;你的精力也不会集中&#xff08;提高…

JS SyntaxError: Unexpected token 报错解决

JS SyntaxError: Unexpected token 报错解决 在JavaScript开发中&#xff0c;SyntaxError: Unexpected token 是一个常见的错误&#xff0c;它通常表示JavaScript引擎在解析代码时遇到了意料之外的符号。这个错误可能由多种原因引起&#xff0c;包括拼写错误、缺少括号、引号不…

MySQ分库分表与MyCat安装配置

目录 介绍 拆分策略 垂直拆分 1. 垂直分库 2. 垂直分表 水平拆分 1. 水平分库‘ 2. 水平分表 实现技术 MyCat概述 安装 概念介绍 MyCat入门 需求 环境准备 分片配置 启动服务 连接测试 执行SQL语句测试 MyCat配置 1. schema.xml 1. schema标签 2. dat…

观测云产品更新 | 异常追踪、数据保存策略、BPF 日志、管理优化等

观测云更新 Breaking Changes OpenAPI&#xff1a;【事件】未恢复事件数据源从 UE 变更为 E 。 新增功能 管理&#xff1a;新增 Client Token 统一管理入口&#xff0c;用户使用公网 DataWay 接入 RUM 应用时&#xff0c;可更换系统默认生成的 Token&#xff0c;使用自定义…

重生奇迹 MU热血与激情的战斗岁月

这里&#xff0c;是一个充满神秘与奇幻色彩的大陆。古老的城堡诉说着往昔的荣耀&#xff0c;广袤的荒野等待着勇敢者的探索。长春的勇士们&#xff0c;准备好迎接挑战了吗&#xff1f; 绚丽的画面&#xff0c;每一帧都如同精美的画卷。从神秘的魔法森林到雄伟的龙巢&#xff0…

看看镭速传输中如何处理Mysql超时配置问题的

Mysql作为一个广泛使用的开源关系型数据库管理系统&#xff0c;以快速、可靠、易于使用、开源的特色闻名&#xff0c;使用 MySQL 来存储和管理数据&#xff0c;已经广泛应用于各个领域、各类大小型应用中。 使用 MySQL 来存储和管理数据的应用中&#xff0c;与数据库之间的连接…

程序员如何利用AI大模型逆袭

随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;尤其是大规模预训练模型&#xff08;如GPT-4、BERT等&#xff09;的出现&#xff0c;程序员迎来了一个前所未有的机会窗口。AI不仅能提高开发效率&#xff0c;还能为程序员提供创新创业的机会。本文将探讨程序…