面试常见概念区分:并发与并行、同步与异步、阻塞与非阻塞、线程同步与互斥

这里写目录标题

  • 面试常见概念区分:并发与并行、同步与异步、阻塞与非阻塞、线程同步与互斥
    • 1. 并发和并行
      • 并发(Concurrency)
      • 并行(Parallelism)
    • 2. 同步和异步
      • 同步(Synchronous)
      • 异步(Asynchronous)
    • 3. 阻塞和非阻塞
      • 阻塞(Blocking)
      • 非阻塞(Non-blocking)
    • 4. 线程同步和互斥
      • 线程同步(Thread Synchronization)
      • 线程互斥(Thread Mutual Exclusion)
    • 总结

面试常见概念区分:并发与并行、同步与异步、阻塞与非阻塞、线程同步与互斥

在编程和系统设计中,我们常常会遇到并发、并行、同步、异步、阻塞、非阻塞、线程同步与互斥等概念。这些概念虽然常见,但很容易混淆。本文将通过通俗易懂的方式,结合实际例子,帮助你深入理解这些核心概念。

1. 并发和并行

并发(Concurrency)

并发是指宏观上看起来多个任务同时运行,但在微观上,这些任务的指令是交织着运行的。例如,在单核CPU上运行多任务时,虽然看起来像是同时运行,但实际上CPU在不同任务之间快速切换,每个任务的指令是穿插执行的。这种并发并不能真正提高计算机的性能,但可以提高资源利用率和效率。

并行(Parallelism)

并行是指严格物理意义上的同时运行。例如,在多核CPU上,多个任务可以分别在不同的核心上同时运行,互不影响。在单个周期内,每个核心都可以执行自己的指令,因此并行确实提高了计算机的性能。这也是现代CPU向多核发展的主要原因。

总结:

  • 并发是任务在时间上交替执行,宏观上看起来同时运行。
  • 并行是任务在物理上同时运行,真正提高了性能。

2. 同步和异步

同步和异步关注的是消息通信机制(synchronous communication / asynchronous communication)。

同步(Synchronous)

同步通信是指调用者在发出调用后,必须等待调用结果返回才能继续执行。换句话说,调用者会主动等待调用的结果。例如,你打电话问书店老板有没有《分布式系统》这本书,老板会说“稍等,我查一下”,然后开始查找。在老板找到结果并告诉你之前,你只能等待。

异步(Asynchronous)

异步通信是指调用者在发出调用后,不会等待结果返回,而是继续执行其他任务。结果通过回调函数或其他方式通知调用者。例如,你问书店老板有没有书,老板直接说“我查一下,查好了打电话给你”,然后挂电话。你不需要等待结果,可以先去做别的事情,老板查到结果后会主动打电话通知你。

总结:

  • 同步:调用者等待结果返回。
  • 异步:调用者不等待结果,通过回调或其他方式获取结果。

3. 阻塞和非阻塞

阻塞和非阻塞关注的是程序在等待调用结果时的状态。

阻塞(Blocking)

阻塞调用是指调用结果返回之前,当前线程会被挂起,无法执行其他任务。例如,你打电话问书店老板有没有书,然后一直等待结果,直到老板告诉你答案。

非阻塞(Non-blocking)

非阻塞调用是指调用结果返回之前,当前线程不会被挂起,可以继续执行其他任务。例如,你问书店老板有没有书,然后不等结果,先去做别的事情。过一会儿再检查老板是否回复了。

总结:

  • 阻塞:线程在等待结果时被挂起。
  • 非阻塞:线程在等待结果时可以继续执行其他任务。

注意: 阻塞与非阻塞与同步异步无关。同步可以是阻塞的,也可以是非阻塞的;异步也可以是阻塞的,也可以是非阻塞的。

4. 线程同步和互斥

线程同步(Thread Synchronization)

线程同步是指线程之间存在的一种制约关系,一个线程的执行依赖于另一个线程的消息。当一个线程没有得到另一个线程的消息时,它会等待,直到消息到达才继续执行。例如,线程A需要线程B的结果才能继续执行,线程A就会等待线程B完成。

线程互斥(Thread Mutual Exclusion)

线程互斥是指多个线程对共享资源的访问是排他性的。当一个线程正在访问共享资源时,其他线程必须等待,直到当前线程释放资源。例如,多个线程都要访问一个共享变量,但同一时刻只能有一个线程访问。

总结:

  • 线程同步:线程之间存在依赖关系,需要等待消息。
  • 线程互斥:多个线程对共享资源的访问是排他性的。

总结

本文通过通俗易懂的例子,帮助你理解了并发、并行、同步、异步、阻塞、非阻塞、线程同步与互斥等核心概念。这些概念在编程和系统设计中非常重要,理解它们可以帮助你更好地设计高效、可靠的系统。

如果你对这些概念还有疑问,欢迎在评论区留言,我们一起讨论!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Figma介绍(基于云的协作式界面设计工具,主要用于UI/UX设计、原型制作和团队协作)

文章目录 注册和登录简单操作说明Figma介绍**核心特点**1. **云端协作与实时同步**2. **跨平台兼容**3. **高效设计工具**4. **原型交互与动效**5. **开发对接友好**6. **插件生态**7. **版本控制与历史记录** **适用场景**- **团队协作**:远程团队共同设计、评审、…

RAW图与BAYER图异同

RAW图是一种未经处理、未压缩的图像文件格式,它记录了图像传感器捕捉到的原始数据,包含了拍摄时的大量图像信息。下面从多个方面详细介绍RAW图: 参考:B站大清光学 定义与基本概念 定义:RAW文件是图像传感器将捕捉到…

mac安装navicat及使用

0.删除旧的 sudo rm -Rf /Applications/Navicat\ Premium.app sudo rm -Rf /private/var/db/BootCaches/CB6F12B3-2C14-461E-B5A7-A8621B7FF130/app.com.prect.NavicatPremium.playlist sudo rm -Rf ~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexF…

Windows11【1001问】打开Windows 11控制面板的14种方法

在Windows 11中,尽管微软逐渐转向现代的“设置”应用,但传统的“控制面板”仍然是许多用户管理系统、调整硬件设置和自定义功能的首选工具。然而,由于Windows 11的界面设计更注重简洁性,控制面板的访问方式可能对部分用户来说不够…

Language Models are Few-Shot Learners,GPT-3详细讲解

GPT的训练范式:预训练Fine-Tuning GPT2的训练范式:预训练Prompt predict (zero-shot learning) GPT3的训练范式:预训练Prompt predict (few-shot learning) GPT2的性能太差,新意高&…

数据结构--图的基本操作

知识总览: 一、图的基本操作 1.Adjacent(G,x,y),判断图G是否有边---对于有向图和无向图来说,邻间接矩阵的时复杂度更低。 邻接矩阵时间复杂度 O(1) 邻接表时间复杂度 O(1)~~O(v) 2.Neighbors(G,x):判断图G与结点x邻接的边.---邻间接矩…

Unity中解锁图片像素点,动态闭合轨迹检测

Unity中解锁图片像素点,动态闭合轨迹检测 介绍资源下载搭建总结 介绍 因为最近在研究Mane天蚕变的游戏完整逻辑,研究了两套方案做解锁图片的功能,这里我先讲一下我的这个图片像素点的方案解锁图片,这个逻辑其实很简单就是利用划线…

buu-ciscn_2019_ne_5-好久不见50

1. 背景分析 目标程序是一个存在漏洞的二进制文件,我们可以通过以下方式利用漏洞获取 shell: 程序中存在 system() 函数,但没有明显的 /bin/sh 字符串。 使用工具(如 ROPgadget)发现程序中有 sh 字符串,可…

图论part4|827. 最大人工岛、127. 单词接龙、463. 岛屿的周长

827. 最大人工岛 🔗:827. 最大人工岛 - 力扣(LeetCode)827. 最大人工岛 - 给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。返回执行此操作后,grid 中最大的岛屿面积是多少?岛屿 由一…

SpeechCraf论文学习

Abstract 核心问题 挑战 语音风格包含细微的多样化信息(如情感、语调、节奏),传统基于标签/模板的标注方法难以充分捕捉,制约了语音-语言多模态模型的性能。 数据瓶颈: 大规模数据收集与高质量标注之间存在矛盾&…

SAIL-RK3576核心板应用方案——无人机视觉定位与地面无人设备通信控制方案

本方案以 EFISH-RK3576-SBC工控板 或 SAIL-RK3576核心板 为核心,结合高精度视觉定位、实时通信与智能控制技术,实现无人机与地面无人设备的协同作业。方案适用于物流巡检、农业植保、应急救援等场景,具备高精度定位、低延迟通信与强环境适应性…

PostgreSQL的学习心得和知识总结(一百七十一)|深入理解PostgreSQL数据库之 外连接消除 的使用和实现

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

C语言实现括号匹配检查及栈的应用详解

目录 栈数据结构简介 C语言实现栈 栈的初始化 栈的销毁 栈的插入 栈的删除 栈的判空 获取栈顶数据 利用栈实现括号匹配检查 总结 在编程中,经常会遇到需要检查括号是否匹配的问题,比如在编译器中检查代码的语法正确性,或者在…

【机器学习chp12】半监督学习(自我训练+协同训练多视角学习+生成模型+半监督SVM+基于图的半监督算法+半监督聚类)

目录 一、半监督学习简介 1、半监督学习的定义和基本思想 2、归纳学习 和 直推学习 (1)归纳学习 (2)直推学习 3、半监督学习的作用与优势 4、半监督学习的关键假设 5、半监督学习的应用 6、半监督学习的常见方法 7、半…

2024 年第四届高校大数据挑战赛-赛题 A:岩石的自动鉴定

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

基于WebRTC与P2P技术,嵌入式视频通话EasyRTC实现智能硬件音视频交互,适配Linux、ARM、RTOS、LiteOS

EasyRTC不仅仅是一个连接工具,更是一个经过深度优化的通信桥梁。它在嵌入式设备上进行了特殊优化,通过轻量级SDK设计、内存和存储优化以及硬件加速支持,解决了传统WebRTC在嵌入式设备上的适配难题,显著节省了嵌入式设备的资源。 1…

[c语言日寄]字符串进阶:KMP算法

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋:这是一个专注于C语言刷题的专栏,精选题目,搭配详细题解、拓展算法。从基础语法到复杂算法,题目涉及的知识点全面覆盖,助力你系统提升。无论你是初学者,还是…

Android源码学习之Overlay

在 Android Framework 开发中,Overlay 主要用于修改和替换系统或应用的资源,而无需直接修改源码,与源码解耦。Overlay 机制可以分为 两种类型: 静态 Overlay(Static Resource Overlay, SRO) 在 编译时 覆…

【MySQL】基本操作 —— DDL

目录 DDLDDL 常用操作对数据库的常用操作查看所有数据库创建数据库切换、显示当前数据库删除数据库修改数据库编码 对表的常用操作创建表数据类型数值类型日期和时间类型字符串类型 查看当前数据库所有表查看指定表的创建语句查看指定表结构删除表 对表结构的常用操作给表添加字…

网络安全需要学多久才能入门?

网络安全是一个复杂且不断发展的领域,想要入行该领域,我们需要付出足够多的时间和精力好好学习相关知识,才可以获得一份不错的工作,那么网络安全需要学多久才能入门?我们通过这篇文章来了解一下。 学习网络安全的入门时间因个人的…