总得来说,同步异步出现在以下几个领域:

1  计算机网络。

数据通信技术中有同步通信与异步通信。同步通信简单的说就是你在发送数据时候我必须同时接受。这个过程有精确的时钟控制。而异步通信是你在发数据时候必须加上开始与结束符号,这样我才可以接受,异步通信没有时钟控制。因为没有了时钟的控制(额外硬件),所以成本低,设备简单,但是传输效率较低。(开始与结束符占了开销)。

在网络协议(network protocol)的三大组成部分:语法,语义,同步。这时候同步指的是事件实现的顺序。比如建立tcp连接时候的三次握手实现顺序。

2   操作系统。

中断系统的一个特点就是可以对异步事件响应。异步事件指的是断断续续,随机,没有时序关系的事件。同步事件反之,一个事件从头到尾顺序执行,没有间断。

进程间的关系有同步与互斥。同步就是多个进程协调完成一个任务。比如,司机与售票员关系。司机停车---售票员开门----乘客上车---售票员关门---司机开车。在这个过程中任务就是拉乘客。司机和售票员作为两个进程协调工作。互斥指的是多个进程竞争同一个资源。这时资源叫做临界资源(任何时刻只允许一个进程访问,三个线程可以同时时一个变量iChange减1,但任何时间只允许一个对其进行操作,火车售票问题如果不加同步最终票数会出现负值。)。

在现代操作系统中,有并发性,共享性,虚拟性,不确定性四大基础特征。而程序并发活动的实现是异步(一个程序走走停停),并发控制的时候需要用到同步技术。(Java多线程中可以使用Synchronized实现同步控制),所以并发控制需要同步,并发的实现是异步,同步过多又会导致死锁。在并发领域有一句经典的话,并发执行的可串行化。那么并行是什么?并行才是真正的并发。并发只不过在占用时间片不同上实现的。

I/O模型中,频繁出现的有同步与异步,阻塞与非阻塞。要想弄清这个问题,必须了解冯诺依曼体系结构与进程状态模型。首先理解I/O在计算机体系中作用。

一个输入操作包含两个过程:

1   等待数据准备好

2   从内核向进程复制数据。

同步与异步在I/O中指的是一种数据访问机制。

同步指的是主动请求后等待I/O,数据就绪后读写必须阻塞。

异步指的是主动请求后,可处理其他任务,等I/O完毕后通知。

阻塞指的是进程访问的数据未就绪,进程必须等待。

非阻塞指的是进程访问数据未就绪,进程可以不用等待。

进程一般有五种状态,创建进程,此时进程在就绪队列中等待cpu调度,当在cpu上执行时,此时为运行态,运行过程中可能遇到I/O请求此时进入阻塞状态,或者进程执行完,进入死亡状态。阻塞的时候,当所需资源满足时,从阻塞状态转化为就训态。如此反复。

有了以上基础知识的积淀,现在来看常用I/O模型。

完整模型请参考《Unix网络编程卷1》P127.

举个例子吧:纯概念实在难以理解。

如果说我(某个进程)去食堂吃饭(任务A),吃完后要去图书馆(任务B)。也可以去教室。(任务C)等待阿姨把饭做好。

阻塞式I/O就是我一直在等阿姨做饭。直到吃上饭。

非阻塞式I/O就是我在等的时候,会一直问阿姨饭好了没有,直到吃上饭。

同步阻塞式I/O和同步非阻塞式I/O都会使得进程阻塞。(任务卡在A那里不动了)

I/O复用涉及到select,poll函数,由于未深入理解,例子没想到。

信号驱动式就是我在等的时候,也在等其他信号,比如阿姨使眼色我让我吃饭,直到吃上饭。

异步I/O就是我在等的时候,可以去图书馆也可以去教室,饭好了后,阿姨会叫我吃饭。(发起任务A到通知结束A时候过程中可以执行选择性执行A,B,C,而不会把阻塞到任务A那里)。

看了这么多,那究竟什么是同步与异步呢?必须放在具体的环境以及项目中去深入理解。

这是我所知道的同步与异步在计算机中出现的地方,文中有很多观点是我自己理解的,可能不符合真实的含义,希望大家帮我纠正下。不甚感激。个人水平实在有限,没有贡献关于同步异步的代码。

这是我的第一篇技术博客,没想到竟然花费了2个多小时。发现自己理解的---写出来----说出来---说出来让别人理解的难度水平在递增,写作过程也是一个梳理知识体系以及思考的过程。希望自己可以坚持写博客。

计算机同步与异步的概念,同步与异步到底是什么???相关推荐

  1. 计算机的同步操作与异步操作的概念,运城计算机同步与异步的概念和应用方法...

    同步与异步是程序员在开发软件的时候会经常用到的一个编程方法,而金我们就通过案例分析来了解一下,同步与异步的概念和应用方法. 1.同步 一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后, ...

  2. 简述同步和异步的区别

    简述同步和异步的区别 同步: 同步的思想是:所有的操作都做完,才返回给用户.这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉 ...

  3. js同步和异步的区别

    js同步和异步的区别 同步任务 异步任务 同步和异步运行机制 首先,不同于其他后端语言,javascript语言是单线程机制.所谓单线程就是按次序执行,执行完一个任务再执行下一个.对于浏览器来说,也就 ...

  4. Java中同步和异步的区别是什么?优点缺点以及概念理解

    同步:提交请求--->等待服务器处理--->服务器处理完毕返回的这个期间客户端浏览器不能干别的事 异步:请求通过事件触发--->服务器处理(这时客户端浏览器还可以做其他的事情)--- ...

  5. python同步和异步的区别_Python语言---同步和异步

    异步:某个事情需要10秒.而我只需要调用一个函数帮我做,我可以干 其他的事情.(比如调用celery) 同步:某个事情需要10秒完成,我等他完成之后再继续后面的工作. 举例:小明去书店买书 第一种方式 ...

  6. JS中同步与异步的理解

    你应该知道,javascript语言是一门"单线程"的语言,不像java语言,类继承Thread再来个thread.start就可以开辟一个线程,所以,javascript就像一条 ...

  7. 同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO

    IO的方式通常分为几种,同步阻塞的BIO.同步非阻塞的NIO.异步非阻塞的AIO. 一.BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSock ...

  8. Java --- 线程同步和异步的区别

    1. Java 线程 同步与异步 多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线程的处理的数据,而B线程又修改了A线程处理的数理.显然这是由于全局资源造成的,有 ...

  9. 响应式编程(反应式编程)的来龙去脉(同步编程、多线程编程、异步编程再到响应式编程)

    响应式编程的来龙去脉(同步编程.多线程编程.异步编程再到响应式编程) 文章目录 响应式编程的来龙去脉(同步编程.多线程编程.异步编程再到响应式编程) 简介 1. 示例 2. 同步编程 3. 多线程编程 ...

最新文章

  1. 如何在 Linux 上使用 kill 和 killall 来管理进程
  2. win7中怎么创建宽带连接
  3. [团队开发]总结下Server 2008 + TeamFoundation Server 2008安装过程
  4. STL源码剖析 set相关算法
  5. 终端卡顿优化的全记录
  6. 【算法导论33】跳跃表(Skip list)原理与java实现
  7. 简介NoSqlOnSql在SQL上实现NOSQL
  8. 避免踩坑:易盾安全老司机起底Android九大漏洞,附解决建议
  9. 亚马逊+纽约大学开源图神经网络框架DGL:新手友好,与主流框架无缝衔接
  10. Flink 异步IO
  11. 什么是DNS云解析?云解析有哪些特点?
  12. python编程拍卖算法
  13. 智慧灯杆解决方案之智慧景区建设
  14. 用python turtle画人_家里蹲太孤单?用 Python 画一只单身狗
  15. php 截取图片像素,php 如何修改图片像素大小
  16. 机器学习与网络安全(一)
  17. uniapp 小程序实现 RSA 加密
  18. 详细的网络安全基础,一篇文章统统告诉你
  19. CSS3实现3D立体效果
  20. 紫薯第10章数学 kaungbin专题14数论基础

热门文章

  1. 资深猎头解密:什么样的简历一投就中?
  2. 海尔简爱s11怎么进入bios_海尔简爱S11笔记本安装win10系统操作方法
  3. 微信小程序云开发之Node部署
  4. 对《ToonSynth: Example-Based Synthesis of Hand-Colored Cartoon Animations》一文的理解(上)
  5. 基于Python+深度学习+神经网络实现高度可用的生活垃圾分类机器人程序
  6. 张先轶博士(OpenBLAS开源项目发起人,PerfXLab创始人)的采访录,中关村管委会千帆计划之“创见新面孔”专题采访活动
  7. 兴趣题:猴子吃桃问题
  8. 纯前端读取excel (SheetJS js-xlsx.js框架)
  9. Windows7下新建记事本的四种编码方式
  10. V神发起 Twitter 硬分叉民意调查,结果如何?