美文网首页
同步和异步的区别

同步和异步的区别

作者: 十二限 | 来源:发表于2017-11-16 20:05 被阅读0次

在计算机领域,同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去;异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。

而我们平时经常讨论的同步问题多发生在多线程环境中的数据共享问题。即当多个线程需要访问同一个资源时,它们需要以某种顺序来确保该资源在某一特定时刻只能被一个线程所访问,如果使用异步,程序的运行结果将不可预料。因此,在这种情况下,就必须对数据进行同步,即限制只能有一个进程访问资源,其他线程必须等待。

实现同步的机制主要有临界区、互斥、信号量和事件

临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资 源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。

互斥量:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享 .互斥量比临界区复杂。因为使用互斥不仅仅能够在同一应用程序不同线程中实现资源的安全共享,而且可以在不同应用程序的线程之间实现对资源的安全共享。

信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目 。信号量对象对线程的同步方式与前面几种方法不同,信号允许多个线程同时使用共享资源,这与操作系统中的PV操作相同。它指出了同时访问共享资源的线程最大数目。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目。
事件:通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作 。

相关文章

  • JS 函数的执行时机

    1.同步和异步的区别 我们都知道JS里面有同步和异步的区别,怎么理解同步和异步呢。一家餐厅吧来了5个客人,同步的意...

  • 📕 史上最实用的JS笔记

    1. 同步与异步 同步和异步的区别是什么?分别举一个同步和异步的例子 同步会阻塞代码执行,而异步不会阻塞代码执行。...

  • 线程并行学习笔记

    一、线程并行相关概念 同步(Synchronous)和异步(Asynchronous) 同步和异步的本质区别是是否...

  • JS之异步和单线程

    问题 1、同步和异步的区别?分别举例 2、setTimeout相关 3、前端中使用异步的场景 知识点 异步和同步 ...

  • IO模型

    同步,异步,阻塞和非阻塞的概念与区别 同步和异步从消息通知机制角度来说的。 两个任务 同步一直等,异步不等 阻塞和...

  • javascript 基础攻关(四)—— 异步和单线程

    异步 题目 同步和异步的区别是什么?分别举一个同步和异步的例子 一个关于setTimeout的笔试题 前端使用异步...

  • 为什么要使用异步 PHP

    同步编程与异步编程的区别 在讨论异步 PHP 的优点之前,让我们快速回顾一下同步编程模型和异步编程模型之间的区别。...

  • 异步和单线程 - 面试题

    1:同步和异步的区别是什么?分别举一个同步和异步的例子? 答案:同步(代码从上到下执行)会阻塞代码执行,而异步不会...

  • 同步和异步区别

    https://www.zhihu.com/question/19732473 知乎的解释,很不错同步:syin...

  • BIO NIO AIO

    同步、异步、阻塞、非阻塞的区别 同步、异步 同步、异步主要是指应用程序和操作系统之间的交互方式。应用程序通过系统调...

网友评论

      本文标题:同步和异步的区别

      本文链接:https://www.haomeiwen.com/subject/cajrvxtx.html