精华内容
下载资源
问答
  • 线程同步和异步的区别

    千次阅读 2019-03-21 09:06:04
    线程和异步操作的异同  多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为多线程和异步操作是等同的概念。但是,多线程和异步操作还是有一些区别的。而...

    多线程和异步操作的异同

      多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为多线程和异步操作是等同的概念。但是,多线程和异步操作还是有一些区别的。而这些区别造成了使用多线程和异步操作的时机的区别。

      异步操作的本质

      所有的程序最终都会由计算机硬件来执行,所以为了更好的理解异步操作的本质,我们有必要了解一下它的硬件基础。 熟悉电脑硬件的朋友肯定对DMA这个词不陌生,硬盘、光驱的技术规格中都有明确DMA的模式指标,其实网卡、声卡、显卡也是有DMA功能的。DMA就是直接内存访问的意思,也就是说,拥有DMA功能的硬件在和内存进行数据交换的时候可以不消耗CPU资源。只要CPU在发起数据传输时发送一个指令,硬件就开始自己和内存交换数据,在传输完成之后硬件会触发一个中断来通知操作完成。这些无须消耗CPU时间的I/O操作正是异步操作的硬件基础。所以即使在DOS这样的单进程(而且无线程概念)系统中也同样可以发起异步的DMA操作。

      线程的本质
      线程不是一个计算机硬件的功能,而是操作系统提供的一种逻辑功能,线程本质上是进程中一段并发运行的代码,所以线程需要操作系统投入CPU资源来运行和调度。

      异步操作的优缺点

      因为异步操作无须额外的线程负担,并且使用回调的方式进行处理,在设计良好的情况下,处理函数可以不必使用共享变量(即使无法完全不用,最起码可以减少共享变量的数量),减少了死锁的可能。当然异步操作也并非完美无暇。编写异步操作的复杂程度较高,程序主要使用回调方式进行处理,与普通人的思维方式有些初入,而且难以调试。

      多线程的优缺点
      多线程的优点很明显,线程中的处理程序依然是顺序执行,符合普通人的思维习惯,所以编程简单。但是多线程的缺点也同样明显,线程的使用(滥用)会给系统带来上下文切换的额外负担。并且线程间的共享变量可能造成死锁的出现。

      适用范围

      在了解了线程与异步操作各自的优缺点之后,我们可以来探讨一下线程和异步的合理用途。我认为:当需要执行I/O操作时,使用异步操作比使用线程+同步I/O操作更合适。I/O操作不仅包括了直接的文件、网络的读写,还包括数据库操作、Web Service、HttpRequest以及.Net Remoting等跨进程的调用。
      而线程的适用范围则是那种需要长时间CPU运算的场合,例如耗时较长的图形处理和算法执行。但是往往由于使用线程编程的简单和符合习惯,所以很多朋友往往会使用线程来执行耗时较长的I/O操作。这样在只有少数几个并发操作的时候还无伤大雅,如果需要处理大量的并发操作时就不合适了。

     

    线程同步与异步区别

    线程同步是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低    线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制

    异步处理就是,你现在问我问题,我可以不回答你,等我用时间了再处理你这个问题.同步不就反之了,同步信息被立即处理 -- 直到信息处理完成才返回消息句柄;异步信息收到后将在后台处理一段时间 -- 而早在信息处理结束前就返回消息句柄

    展开全文
  • &...区别同步和异步</strong>   一个进程启动的多个不相干线程,它们相互之间关系为异步。   举个简单的例子 就是游戏,游戏会有图像背景音乐 图像是由玩家操作...
    <strong>出处:http://blog.csdn.net/wxqian25/article/details/9417613</strong>
    <strong>区别同步和异步</strong>
     
    一个进程启动的多个不相干线程,它们相互之间关系为异步。
     
    举个简单的例子 就是游戏,游戏会有图像和背景音乐 
    图像是由玩家操作的 而背景音乐一般都是循环播放玩家不能操作 
    这里的图像和声音就分别是不同的线程   图像一般是主线程 背景音乐是守护线程(守护线程就是主线程结束的时候守护线程也结束)  像这样的组合就是异步线程 两个线程之间没什么关系各干各的 
    .至于同步的话指的是多线程同时操作一个数据 这个时候需要对数据添加保护 这个保护就是线程的同步
     
    <strong>同步机制</strong>
     
    临界区、互斥区、事件、信号量四种方式 临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别 1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。 2、互斥量:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享 3、信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目 4、事 件: 通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作
     
    展开全文
  • 线程同步和异步区别 同步机制

    千次阅读 2013-09-04 12:56:22
    线程同步和线程异步有什么区别?(重要基础知识) 打个比方,如果你在等一个人, 同步的时候,你会一直等到她来了之后才做其他事情,这个过程除了等待你啥都不会做, 异步的时候,你一边在等,可能一边玩游戏或者...
    线程同步和线程异步有什么区别?(重要基础知识)
    打个比方,如果你在等一个人,
    同步的时候,你会一直等到她来了之后才做其他事情,这个过程除了等待你啥都不会做,
    异步的时候,你一边在等,可能一边玩游戏或者是看报纸什么的,一直到她到来,你的等待状态才会结束
    在实现上,同步的过程会阻塞进程的所有其他操作,将同步转换为异步的最常见方法则是
    将会阻塞进程的等待操作放入到一个新的进程中,同时为该等待操作添加一个监视器,在检测到等待操作完成的时候结束等待的进程。

    同步就是指一个线程要等待上一个线程执行完之后才开始执行当前的线程

    异步是指一个线程去执行,它的下一个线程不必等待它执行完就开始执行

    1 区别同步和异步
    一个进程启动的多个不相干线程,它们相互之间关系为异步。
    
    
    举个简单的例子 就是游戏,游戏会有图像和背景音乐 
    图像是由玩家操作的 而背景音乐一般都是循环播放玩家不能操作 
    这里的图像和声音就分别是不同的线程   图像一般是主线程 背景音乐是守护线程(守护线程就是主线程结束的时候守护线程也结束)  像这样的组合就是异步线程 两个线程之间没什么关系各干各的 
    .至于同步的话指的是多线程同时操作一个数据 这个时候需要对数据添加保护 这个保护就是线程的同步
    2 同步机制
    临界区、互斥区、事件、信号量四种方式
    临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)、事件(Event)的区别 
    1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。在任意时刻只允许一个线程对共享资源进行访问,如果有多个线程试图访问公共资源,那么在有一个线程进入后,其他试图访问公共资源的线程将被挂起,并一直等到进入临界区的线程离开,临界区在被释放后,其他线程才可以抢占。 
    2、互斥量:采用互斥对象机制。 只有拥有互斥对象的线程才有访问公共资源的权限,因为互斥对象只有一个,所以能保证公共资源不会同时被多个线程访问。互斥不仅能实现同一应用程序的公共资源安全共享,还能实现不同应用程序的公共资源安全共享 
    3、信号量:它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目 
    4、事 件: 通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作

    1、首先明确一点,对于单核CPU,任意一个时刻只有一个线程在运行。那么既然这样,多线程还有什么意义呢? 举例来说,现在只有一个人,要做好几个任务。单线程就是,任务一个一个地做,必须做完一个任务后,再去做另一个任务。多线程就是一会做这个任务,一会做那个任务,每个任务做一会,不停的切换。显然,最后把所有的任务做完,多线程必定比单线程更耗费时间。为什么?因为,多线程要在不同的任务之间切换,切换肯定是要耗费时间的。那么问题来了,既然多线程比单线程更耗费时间,为什么还要多线程? 单线程有一个致命的问题,就是一个线程运行的整个过程中,其他线程必须等待,不能响应用户的命令,用户体验太差,好像电脑死机一样。假如单线程,你能想象一下,用户在听歌的时候不能写文档,这种体验也太差了。多线程的时候,单核CPU一会做这个任务,一会做那个任务,切换的时间是毫秒级的,用户完全感觉不出来。从而给用户照成错觉,感觉这些任务并行的运行。

    2、同步的使用场景:多个线程同时访问一块数据,也叫共享区。对于多个线程同时访问一块数据的时候,必须使用同步,否则可能会出现不安全的情况。比如数据库中的脏读。但是,多个线程同时访问一块数据,有一种情况不需要同步技术,那就是原子操作,也就是说操作系统在底层保证了操作要么全部做完,要么不做。

    3、异步的使用场景:只有一个线程访问当前的数据。比如,观察者模式,没有共享区,主题发生变化,通知观察者更新,主题继续做自己的事情,不需要等待观察者更新完成后再工作。


    
    

    展开全文
  • 1.线程同步是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低 ,串行执行任务   线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制,并行执行任务 1.2.3模式  使用GCD...

     1.线程同步是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低 ,串行执行任务 

     线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制,并行执行任务 1.2.3模式

     使用GCD的主队列.使用NSOperationQueue,把最大线程数(并发)设为1    1.1.1

    2.OC中是所有对象间的交互是如何实现的?

    通过消息发送机制实现    对象---方法

    3.描述上拉加载、下拉刷新的实现机制?

    继承自滚动视图,滚动视图的两个属性offset (x,y)表示偏移量,inset(top,left)当y值未负值的时候,滚动视图的高度--显示视图高度+100(假如偏移100的时候刷新),再次刷新数据.

    4.谈谈对性能优化的看法,如何做?

    懒加载,内存管理,及时释放内存,

    程序后台运行使用推送通知

    渲染 减少次数 (减少显卡使用)

    tableview重用



    展开全文
  • 线程同步异步

    2016-01-30 15:25:57
    打个比方,如果你在等...在实现上,同步的过程会阻塞进程的所有其他操作,将同步转换为异步的最常见方法则是 将会阻塞进程的等待操作放入到一个新的进程中,同时为该等待操作添加一个监视器,在检测到等待操作完成的时
  • 当一个线程结束时异步通知另一线程,被通知的线程不用等待!
  • ios的线程和同步异步操作

    千次阅读 2016-01-30 17:45:59
    ios的线程和同步异步操作 ios的线程和同步异步操作 ios的多线程同步异步操作,都是我们日常的开发中经常会遇到的问题,本文把常见的ios线程同步异步的操作进行了整理。 代码下载: 我博客中大部分...
  • 线程同步异步套接字编程

    千次阅读 2014-02-21 15:27:51
    线程同步异步套接字编程 1.事件对象 上一次介绍了利用互斥对象实现线程同步。这次将继续介绍另两种线程同步的方法:事件对象关键字代码段。 1.1事件对象 事件对象也属于内核对象,包括三个成员 1)使用计数 2)...
  • 线程同步异步

    千次阅读 2013-03-08 16:20:33
    1、首先明确一点,对于单核CPU,任意一个时刻只有一个线程在运行。那么既然这样,多线程还有什么意义呢? 举例来说,现在只有一个人,要做好几个任务。单线程就是,任务一个一个地做,必须做完一个任务后,再去做另...
  • delphiXE关于线程和线程线程同步异步执行 一、最好的参照案例 {$BDS}\source\fmx\FMX.Helpers.Android.pas 如下四个独立方法: type TMethodCallback = procedure of object; TCallBack = reference ...
  • 线程中的同步和异步的区别

    万次阅读 多人点赞 2017-12-23 14:48:44
    百度到的同步和异步概念: 同步(Sync)所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 根据这个定义,Java中所有方法都是同步调用,应为必须要等到结果后才会继续...
  • 同步(Sync) 所谓同步,就是发出一个功能调用时...当一个异步被调用触发的时候,调用者在没有得到结果之前就可以做操作,当调用完成后一般通过回调,通知,状态来通知调用者,异步调用调用的返回不受到调用者的控制。 ...
  •  多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为多线程和异步操作是等同的概念。但是,多线程和异步操作还是有一些区别的。而这些区别造成了使用多线程和...
  • 第16章、线程同步异步套接字编程   1. 另外两种线程同步的方法:事件对象关键代码段;   2. 事件对象有两种不同的类型:   1. 人工重置的事件对象:当它得到通知的时,等待该事件对象的所有线程均...
  • Android中线程同步异步方式小结

    千次阅读 2018-02-13 14:32:18
    一、同步和异步的区别首先以一个常见的开发场景来区别一下同步和异步的区别,比如我们要获取一张网络图片并完成显示。在这个场景中我们需要开启两个线程,一个是子线程—即下载图片的线程;另外是主 UI 线程—即图片...
  • 1、进程和线程的概念 进程:运行中的应用程序称为进程,拥有系统资源(cpu、内存) 线程:进程中的一段代码,一个进程中可以有多段代码。本身不拥有资源(共享所在进程的资源); 在java中,程序入口被自动创建为...
  • 之前一直混淆同步和线程之间的概念今就这几个概念谈一下自己的理解 1、同步(Sync) 先说一下概念:所谓同步,就是发出一个功能调用时,在没有得到结果之前,该调用就不返回或继续执行后续操作。 我理解是:...
  • 孙鑫16线程同步异步套接字bianc.txt

    千次阅读 2012-02-14 14:00:36
    线程同步(利用互斥对象实现线程同步,稳定) 另两种线程同步的方法:事件对象,关键代码段 事件对象(也属于内核对象),包含三个成员: 1.使用计数。 2.用于指明该事件是一个自动重置的事件还是一个人工重置的事件的...
  • 线程同步异步及阻塞非阻塞

    千次阅读 2018-02-23 00:38:48
    线程同步异步及阻塞非阻塞 进程和线程的概念 进程:运行中的应用程序称为进程,拥有系统资源(cpu、内存) 线程:进程中的一段代码,一个进程中可以有多段代码。本身不拥有资源(共享所在进程的资源); ...
  • 线程同步异步、串行、并行

    千次阅读 2017-03-17 22:36:06
    线程的时效来看分别同步异步线程的执行来看线程队列分为串行队列和并行队列从线程的时效来看,分别同步异步 ...实际处理这个调用的部件在完成后,通过状态、通知和回调(Handler机制)来通知调
  • 同步和异步

    2015-07-28 10:44:59
    线程同步和异步线程和异步操作的异同  多线程和异步操作两者都可以达到避免调用线程阻塞的目的,从而提高软件的可响应性。甚至有些时候我们就认为多线程和异步操作是等同的概念。但是,多线程和异步操作...
  • 线程同步编程方法1 事件对象 n事件对象也属于内核对象,包含一个使用计数,一个用于指明该事件是一个自动重置的事件还是一个人工重置的事件的布尔值,另一个用于指明该事件处于已通知状态还是未通知状态的布尔...
  • 比如全国各地的人在12306上买同一班火车票的时候,售票方要保证这么多几乎同时发出买票请求的人得到票号连续且互不相同的票,这就需要用到多线程同步和异步方式。  一、异步 异步方式的使用比较简单,在对关键数据...
  • python 多线程学习一 (同步与异步)0x00 概念0x01 方法中的同步与异步0x02 图解同步与异步0x03 同步异步与阻塞非阻塞 0x00 概念 定义:同步异步关注的是消息通信机制 (synchronous communication/ asynchronous ...
  • 不一定要同时,不同代码块交替执行的性能,可以串行处理也可以并行处理并行:同时处理多个任务的能力,不同代码块同时执行的性能串行:指多个任务时,各个任务按顺序执行,完成一个之后才能执行下一个同步:所谓同步...
  • 线程是进程的一个执行流,是CPU调度分派的基本单位,它是比进程更小的能独立运行的基本单位,一个进程可以有多个线程,多个线程可以并发执行,线程与同属一个进程的其他线程共享进程所拥有的全部资源。 与进程...
  • 进程和线程、并发并行、同步和异步

    千次阅读 多人点赞 2018-06-13 20:37:12
    异步1.谈到并发,就不得不提串行并行了。这三点容易混淆。如下图所示,串行:一个时间段内,执行一个任务的同时不能执行其他任务,只能等到第一个任务完成后才能进行第二个。并行:一个时间段内有多个任务,可以...
  • 同步和异步、阻塞非阻塞 异步: 多任务, 多个任务之间执行没有先后顺序,可以同时运行,执行的先后顺序不会有什么影响,存在的多条运行主线 同步: 多任务, 多个任务之间执行的时候要求有先后顺序,必须一个...
  • 1.同步异步1.1同步在多线程的环境中,经常会碰到数据共享的情况,即当多个线程共同需要访问一个资源时,他们需要以某种顺序来确保该资源在某一时刻只能被一个线程使用,否则,程序的运行结果将是不可预料的,在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,291
精华内容 42,516
关键字:

线程同步和异步通知