zoukankan      html  css  js  c++  java
  • 进程同步与异步

    同步:

    过程的执行有一定的顺序,也就是说必须一步一步执行。举个例子,在socket中,服务器accept()等待客户端的连接,这里的等待实际上就是阻塞了,在客户端连接之前,该过程不会往下执行。
    在同步阻塞中,应用程序执行到需要IO操作,会执行一个系统调用,然后讲控制权交给内核,此时应用程序便发生的堵塞。内核得到控制权后,开始执行这个系统调用,执行完毕后会向应用程序返回响应,应用程序得到响应后,就不再阻塞,往下执行。
    进程的同步也可以设置非阻塞模型,也就是在执行一个系统调用时,内核立即返回响应,但这个响应并不代表IO操作成功,知识为了让应用程序往下执行,想知道IO操作是否成功还需要应用程序自己去访问内核。

    异步:

    异步通信是指,应用程序在需要IO操作时,会执行一个系统调用,但是它并不等待内核返回响应,就直接往下执行了。注意异步与同步非阻塞模型的差别,异步是不等待内核返回响应;而同步非阻塞是有等待内核返回响应的,只不过该响应不代表IO操作成功。

    	

    总结:

    同步:在需要IO操作时,等待系统响应
    异步:在需要IO操作时,不等待系统响应
  • 相关阅读:
    Flask简述
    1601. 救生艇
    1538. 卡牌游戏 II
    1604. 两数最大和
    1790. 旋转字符串II
    1540. 能否转换
    vs2012加载EntityFrameWork框架,连接Oracel
    MVC文件上传
    IIS发布程序,出现:请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理解决方案
    封装Socket.BeginReceive/EndReceive支持Timeout简介
  • 原文地址:https://www.cnblogs.com/Windeal/p/4284676.html
Copyright © 2011-2022 走看看