同步与异步的概念

进程同步用来实现程序并发执行时候的可再现性。

一.进程同步及异步的概念

1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事.就像早上起床后,先洗涮,然后才能吃饭,不能在洗涮没有完成时,就开始吃饭.按照这个定义,其实绝大多数函数都是同步调用(例如sin,isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是

sendmessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的lresult值返回给调用者。

2.异步

异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。

以casycsocket类为例(注意,csocket从casyncsocket派生,但是其功能已经由异步转化为同步),当一个客户端通过调用connect函数发出一个连接请求后,调用者线程立刻可以朝下运行。当连接真正建立起来以后,socket底层会发送一个消息通知该对象。

这里提到执行部件和调用者通过三种途径返回结果:状态、通知和回调。可以使用哪一种依赖于执行部件的实现,除非执行部件提供多种选择,否则不受调用者控制。如果执行部件用状态来通知,那么调用者就需要每隔一定时间检查一次,效率就很低(有些初学多线程编程的人,总喜欢用一个循环去检查某个变量的值,这其实是一种很严重的错误)。如果是使用通知的方式,效率则很高,因为执行部件几乎不需要做额外的操作。至于回调函数,其实和通知没太多区别。

进程同步的基本概念

在计算机系统中,由于资源有限而导致了进程之间的资源竞争和共享,因此,进程的并发执行不仅仅是用户程序的执行开始时间的随机性和提高资源利用率的结果,也是资源有限性导致资源的竞争与共享对进程的执行过程进行制约所造成的。那么,在进程的并发执行过程中存在哪些制约呢?

二.同步与异步传输:

1.异步传输

通常,异步传输是以字符为传输单位,每个字符都要附加 1 位起始位和 1 位停止位,以标记一个字符的开始和结束,并以此实现数据传输同步。所谓异步传输是指字符与字符(一个字符结束到下一个字符开始)之间的时间间隔是可变的,并不需要严格地限制它们的时间关系。起始位对应于二进制值0,以低电平表示,占用 1 位宽度。停止位对应于二进制值 1,以高电平表示,占用 1~2 位宽度。一个字符占用 5~8位,具体取决于数据所采用的字符集。例如,电报码字符为 5 位、ASCII码字符为 7 位、汉字码则为8 位。此外,还要附加 1 位奇偶校验位,可以选择奇校验或偶校验方式对该字符实施简单的差错控制。发送端与接收端除了采用相同的数据格式(字符的位数、停止位的位数、有无校验位及校验方式等)外,还应当采用相同的传输速率。典型的速率有:9 600 b/s、19.2kb/s、56kb/s等。

异步传输又称为起止式异步通信方式,其优点是简单、可靠,适用于面向字符的、低速的异步通信场合。例如,计算机与Modem之间的通信就是采用这种方式。它的缺点是通信开销大,每传输一个字符都要额外附加2~3位,通信效率比较低。例如,在使用Modem上网时,普遍感觉速度很慢,除了传输速率低之外,与通信开销大、通信效率低也密切相关。

2. 同步传输

通常,同步传输是以数据块为传输单位。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列 (如16位或32位CRC校验码),以便对数据块进行差错控制。所谓同步传输是指数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。

三.同步阻塞与异步阻塞:

同步是阻塞模式,异步是非阻塞模式。 

我的理解:同步是指两个线程的运行是相关的,其中一个线程要阻塞等待另外一个线程的运行。异步的意思是两个线程毫无相关,自己运行自己的。 

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。 

异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。 

举个不太恰当的例子,就像: 

SendMessage(...) 

TRACE0("just  like  send"); 

PostMessage(...) 

TRACE0("just  like  WSASend  using  overlapped"); 

 SendMessage是调用的时候不返回,等消息响应后才执行TRACE0,这就是同步. 

PostMessage是调用后马上返回,不用消息响应就执行TRACE0,这就是异步.

四.其它解释:

 同步和异步的区别

 举个例子:普通B/S模式(同步)AJAX技术(异步)

同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事

异步: 请求通过事件触发->服务器处理(这是浏览器仍然可以作其他事情)->处理完毕

同步就是你叫我去吃饭,我听到了就和你去吃饭;如果没有听到,你就不停的叫,直到我告诉你听到了,才一起去吃饭。

异步就是你叫我,然后自己去吃饭,我得到消息后可能立即走,也可能等到下班才去吃饭。

所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。

举个例子 打电话时同步 发消息是异步

 

参考:http://blog.chinaunix.net/uid-21411227-id-1826898.html

转载于:https://www.cnblogs.com/H-BolinBlog/p/5480829.html

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

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

相关文章

编写Play 2的模块,第1部分:使工作正常

几周前,我迁移了Play! 框架 1.x版本的Deadbolt应用于Play 2平台,并且对缺少有关创建模块的信息感到惊讶。 Play 1.x文档中详细介绍了该主题,这使得创建模块非常简单。 显然,需要做些事情-这是关于为Play 2创建模块和插…

Dotnet Core

Global Exceptionhttp://www.talkingdotnet.com/global-exception-handling-in-aspnet-core-webapi/转载于:https://www.cnblogs.com/zwheui/p/6339692.html

交友系统设计:哪种地理空间邻近算法更快?

小熊学Java:https://javaxiaobear.cn 交友与婚恋是人们最基本的需求之一。随着互联网时代的不断发展,移动社交软件已经成为了人们生活中必不可少的一部分。然而,熟人社交并不能完全满足年轻人的社交与情感需求,于是陌生人交友平台…

linux ntp 'ntp_request.c'远程拒绝服务漏洞,NTP 'ntp_request.c'远程拒绝服务漏洞

NTP ntp_request.c远程拒绝服务漏洞发布日期:2013-12-30更新日期:2014-01-09受影响系统:NTP NTP 描述:--------------------------------------------------------------------------------BUGTRAQ ID: 64692CVE(CAN) ID: CVE-20…

指针的内容 ; 指针的地址 指针所指向的内容 指针的类型 指针所指向的类型...

这几个个东东很具有迷惑性。 int a10; //假设a的地址是 0x0000004C int *p; //假设p的地址是 0x0035FA94 p&a; 指针的内容:指针里面存放的是地址。 指针p里面存放的是a的地址(&a)。即指针p里面存放的内容是0x0000004C。 指针的地址&#xff…

Apache Camel教程– EIP,路由,组件,测试和其他概念的简介

公司之间的数据交换增加了很多。 必须集成的应用程序数量也增加了。 这些接口使用不同的技术,协议和数据格式。 但是,这些应用程序的集成应以标准化的方式建模,有效实现并由自动测试支持。 企业集成模式(EIP)[1]中存在…

iOS开发UI篇—UITableview控件简单介绍

一、基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 。 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UITableView继承自UIScrollView,因此支持垂直滚动,⽽且性能极佳 。 UITableview有分组和不分组两种样式,可以在storyboard或…

PL/SQL 08 异常 exception

--PL/SQL错误 编译时 运行时--运行时的出错处理 EXCEPTION --异常处理块DECLARE …BEGIN …EXCEPTION WHEN OTHERS THEN handler_error(…);END; --用户自定义的异常DECLARE e_TooManyStudents EXCEPTION; …BEGIN … RAISE e_TooManyStudents; …EXCEPTION WHEN e_TooMany…

html鼠标事件没反应,鼠标有时候点击没反应怎么解决

关于鼠标有时候点击没反应的问题,一些网友显得一头雾水,那这该怎么解决呢?下面就由小编来给你们说说鼠标有时候点击没反应的原因及解决方法吧,希望可以帮到你们哦!鼠标有时候点击没反应的解决方法一:一,系统繁忙&…

动态ADF火车:以编程方式添加火车停靠站

我将展示如何以编程方式“即时”将火车停靠站添加到ADF火车中。 在我的用例中,我有一些票务预订应用程序。 它具有训练模型的有限任务流。 在火车的第一站,用户输入乘客的数量,在随后的站点,他们输入一些乘客的信息。 带有乘客信息…

修改sqlserver的数据库排序规则语句

alter database SOETMS collate Chinese_PRC_CI_AS 转载于:https://www.cnblogs.com/lxboy2009/p/5481977.html

关于存储过程权限

关于ORACLE账号的权限问题,一般分为两种权限: 系统权限: 允许用户执行特定的数据库动作,如创建表、创建索引、创建存储过程等 对象权限: 允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等 像这种查…

宁波镇海2021年高考成绩查询,最新!2021年,宁波镇海区的这14所中小学“爆了...

宁波镇海区教育局发布了2021年公办学校小学一年级、初中一年级招生第一次预警,这也是宁波首个发布2021年公办学校招生预警的县、市、区。根据最新数据摸排,宁波镇海区有8所小学红色预警、2所初中红色预警,1所小学黄色预警、3所初中黄色预警。…

用Java解决生产者-消费者问题

当我们尝试多线程编程时,生产者-消费者问题是最常见的问题之一。 尽管不像多线程编程中的其他一些问题那样具有挑战性,但是错误地实现此问题可能会造成应用程序混乱。 生产的物品将不使用,开始的物品将被跳过,消耗量取决于生产是在…

哪位科学家奠定了计算机结构理论,计算机等级考试一级理论知识选择题题库(1-50)...

领域中的问题为主的数值计算称为科学计算B)计算机应用可分为数值应用和非数值应用两类C)计算机各部件之间有两股信息流,即数据流和控制流D)对信息(即各种形式的数据)进行收集、储存、加工与传输等一系列活动的总称为实时控制答案:D32. 金卡工程是我国正在…

axios 参数为payload的解决方法

1. 添加头部headers headers: {Content-Type: application/x-www-form-urlencoded,}, axios.post(url, {a: 1, b:2}, {headers: {Content-Type: application/x-www-form-urlencoded,}, }).then(response > response.data).then(err > {console.log(err);}); 2. 在Browser…

超出了GC开销限制– Java堆分析

这篇文章是我们原来的GC超出限制的问题模式帖子的延续。 正确的Java堆分析对于消除O​​utOfMemoryError:GC开销问题至关重要。 如果您不熟悉此Java HotSpot 1.6错误,建议您首先阅读有关此主题的第一篇文章 。 本文将为您提供一个示例程序和一个教程&…

开灯问题

开灯问题 时间限制:3000 ms | 内存限制:65535 KB难度:1描述有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按…

计算机科学基本理论,计算机科学的基础知识.ppt

计算机科学的基础知识第二章 计算机科学的基础知识 本章学习目标: 数据的理解、分类与表示 计算机的基本结构与工作原理 程序设计基础 算法基础 2.1 数据类型 2.2 计算机内部的数据 2.3 表示数据 2.4 十进制表示法 2.5 二进制表示法 2.6 十六进制表示法 2.7 八进制表…

损坏注册表的原因

软件: (1)应用程序错误 (2)驱动程序不兼容或使用了错误的应用程序 (3)应用程序在注册表中添加了错误的内容 (4)应用程序添加了错误的数据文件和应用程序之间的联系 硬件: &#xff0…