精华内容
下载资源
问答
  • 主要介绍了C++ 线程(串行 并行 同步 异步)详解的相关资料,需要的朋友可以参考下
  • lettuce - 高级Java Redis客户端,用于线程安全同步异步和reactive用法。 支持群集,Sentinel,管道和编解码器。
  • 实现WCF 同步异步调用请求实例, Winform 实现客户端 和服务端。
  • 主要为大家详细介绍了Android使用OkHttp进行网络同步异步操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Socket客户端,服务端同步异步实现,源码,服务端异步,客户端异步;服务端同步,客户端同步;服务端异步,客户端同步
  • vue同步异步处理

    千次阅读 2020-07-14 15:11:36
    https://blog.csdn.net/github_37847992/article/details/89923959

    https://blog.csdn.net/github_37847992/article/details/89923959

    展开全文
  • jquery ajax 同步异步的执行示例代码,需要的朋友可以参考下。
  • 同步异步与操作系统

    千次阅读 2019-06-23 14:47:46
    同步异步与操作系统 文章目录同步异步与操作系统同步与异步,阻塞与非阻塞操作系统知识 同步与异步,阻塞与非阻塞 同步与异步 函数或方法被调用的时候,调用者是否得到最终结果。 直接得到最终结果的,就是同步...

    同步异步与操作系统

    同步与异步,阻塞与非阻塞

    • 同步与异步
    1. 函数或方法被调用的时候,调用者是否得到最终结果
      • 直接得到最终结果的,就是同步调用。
      • 不直接得到最终结果的,就是异步调用。
    • 阻塞、非阻塞
    1. 函数或方法调用的时候,是否立刻返回。
      • 立刻返回就是非阻塞调用
      • 不立刻返回就是阻塞调用
    • 区别

      1. 同步、异步,与阻塞、非阻塞不相关
      2. 同步、异步强调的是,是否得到(最终的)结果
      3. 阻塞、非阻塞强调是时间,是否等待。
    • 同步与异步区别在于:调用则是否得到了想要的最终结果。

      1. 同步就是一直要执行到返回最终结果;
      2. 异步就是直接返回了,但是返回的补是最终结果。调用者不能通过这种调用得到结果,以后可以通过被调用者提供的某种方式(被调用者通知调用者、调用者反复查询、回调),来取回最终结果。
    • 阻塞与非阻塞的区别在于:调用者是否还能干其他事情。

      1. 阻塞,调用者就只能等待,无法做其他事情。
      2. 非阻塞,调用者可以先去做其他事情,不用一直等到结果返回。
    • 联系

      1. 同步阻塞,我啥事不干,就等你打饭打给我。打到饭是结果,而且我啥事不干一直等,同步加阻塞。
      2. 同步非阻塞,我等着你打饭给我,饭没好,我不等,但是我无事可做,反复看饭好了没有。打饭是结果,但是我不 一直等。
      3. 异步阻塞,我要打饭,你说等叫号,并没有返回饭给我,我啥事不干,就干等着饭好了你叫我。例如,取了号什么 不干就等叫自己的号
      4. 异步非阻塞,我要打饭,你给我号,你说等叫号,并没有返回饭给我,我在旁边看电视、玩手机,饭打好了叫我。

    操作系统知识

    • 在X86之前,CPU工作在实模式下,之后,开始支持保护模式,对内存进行了划分。
    • X86 CPU有4种工作级别:
      1. Ring0级,可以执行特权指令,可以访问所有级别的数据,可以访问IO设备等
      2. Ring3级,级别最低,只能访问本级别的数据
      • 内核代码运行在Ring0,用户代码运行在Ring3

    现代操作系统采用虚拟存储器,理论上,对于32位系统来说,进程对虚拟内存地址的内存寻址空间为4G ( 2 32 ) (2^{32}) (232)。64位操作系统理论上最大内存寻址空间 2 64 2^{64} 264
    操作系统中,内核程序独立且运行在较高的特权级别上,它们驻留在被保护的内存空间上,拥有访问硬件设备的所有权限,这部分内存称为内核空间(内核态,最高地址1G)。
    普通应用程序运行在用户空间(用户态)。
    应用程序想访问某些硬件资源就需要通过操作系统提供的系统调用,系统调用可以使用特权指令运行在内核空间, 此时进程陷入内核态运行。系统调用完成,进程将回到用户态执行用户空间代码。

    system_001

    展开全文
  • 易语言同步异步套接字模块源码,同步异步套接字模块,Call,取字节集指针,异步客户_初始,异步客户_销毁,异步客户_连接,异步客户_断开,异步客户_发送数据,异步客户_取回数据,异步客户_回调函数,同步客户_初始,同步客户_...
  • 在jquery中给后台交互时默认是异步调用回调函数,有时需要根据从后台获得的值来判断,就需要同步才行。
  • proe的二次开发中同步模式和异步模式的介绍
  • BUCK电路同步异步区别

    千次阅读 2021-07-09 10:25:51
    同步异步的区别从外部来看,是一个多了一个有续流的二极管,一个没有续流的二极管。 其实BUCK的输出电流分成两个部分的,一个部分是来自电源,一个部分是来自异步电路中的这个二极管,只是同步电路把这个二极管用...

    同步和异步的区别从外部来看,是一个多了一个有续流的二极管,一个没有续流的二极管。
    其实BUCK的输出电流分成两个部分的,一个部分是来自电源,一个部分是来自异步电路中的这个二极管,只是同步电路把这个二极管用一个MOSFET给替代了,但是这个MOSFET的开和关需要和开关MOSFET保持一定的相位关系,大家习惯把这样的关系叫做同步模式

    展开全文
  • 同步异步、阻塞非阻塞 个人认为同步和异步是更抽象的概念,是相对的任务而言的。而阻塞和非阻塞就就字面的意思是对当前的进程或线程而言的。 概念之间的区别同步与异步 同步与异步在不同的场景下有不同的概念,在...

    同步异步、阻塞非阻塞

            个人认为同步和异步是更抽象的概念,是相对的任务而言的。而阻塞和非阻塞就就字面的意思是对当前的进程或线程而言的。

     

    概念之间的区别

    同步与异步

            同步与异步在不同的场景下有不同的概念,在IO模型中的同步异步,主要区别在当任务A调用任务B的过程中,进程A是否继续进行。 

            如果A等待B的结果,则为同步;

            如果A不等待B的结果,则为异步;

            同步状态下任务A的执行时依赖于任务B的,任务A成功是依赖于成功B的。而异步模式下两者是不相关的。

            异步的实现方式大概有三种:状态、通知和回调。状态就是任务A去查询任务B的结果如何 ;通知就是等任务B执行完成之后通知任务A来实现;回调就是任务A定义个回调函数,当任务B结束后会自动调用回调函数;

    阻塞与非阻塞

            阻塞和非阻塞的主要区别在,任务A等待B的结果的过程中,任务A是否会被挂起? 如果A等待的过程中不会挂起,则为阻塞; 如果A不等待的过程中不会挂起,则为非阻塞。

            同步阻塞的情况下,任务A会挂起,同步非阻塞的情况下任务A并不挂起。不挂起的情况下任务A保留有响应信号的能力。

            非阻塞的情况下并不会导致线程切换(只是不强制进行线程切换,如果该线程的时间片用完还是会切换的),可能效率更高,cpu利用率也更高,但是cpu可能会无意义空转,这样又会导致性能降低,所以使用何种方式需要看当前的系统情况。

            上面两点似乎被分的很清楚,但是实际上这两个概念我认为指的是同一件事情,站的角度不同而已,过分的强调概念是无意义的。同步和异步更多的是两个任务之间数据通信方式,而阻塞非阻塞,则是站在当前线程自身的角度考虑是否可以在保留进程不挂起而继续进行任务来看的。

    5种IO模型

            要了解IO模型先要理解一linux类的系统下计算机的IO基本概念,5种IO模型实际上指的都是网络编程中的IO,数据从网络读取后先会被放入内核区,而后从内核区传入用户区。 
    5种IO模型中前四种全部都是同步IO只有异步IO,这里的同步和异步区别在于同步IO会在数据到达内核区的等待过程中进行各种方式的检查,如果查到了有数据到达了内核区则进行阻塞,因此整个IO的流程是分成2个阶段的。而异步IO的模式是只有数据完成了从内核区到用户区的复制之后才有通知。 而同步IO中根据第一阶段的不同策略又分成很多的不同模型。

    阻塞式I/O

            应用进程在调用recvfrom,后阻塞直至数据到达用户区之后才恢复。从应用进程的角度上说这是很合理而高效的,从性能的角度来说可以见上文中的讨论,首先他会引起线程切换,其次其cpu利用率低。 



    非阻塞式I/O

            应用进程在调用recvfrom的情况下并阻塞,而是返回一个为准备好的返回值,这时候应用进程可以继续运行,处理一些其他事情。通过这种轮询的方式查询是否有数据到达内核区,如果内核区有数据则需要阻塞应用线程,等待数据读取至用户区之后进行处理。 

            非阻塞I/O看起来很傻,不停的循环,但是这样有两个好处,第一个是不会强制进行线程的切换,线程切换的代价是很大的,其次在两次查询直接可以用来做一些其他的事情,用户线程保有一定的响应能力。 



    I/O复用模型

            非阻塞式I/O中说到了采用轮询的方式查看是否有数据到达内核区,单线程的来看这个问题其实很傻,但是网络IO通常不是单个线程的。会有很多线程同时进行I/O读写,因此我们可以依次检测多个I/O读写任务,如果有某个任务所指定的数据到达则返回这样效率就高得多了,这就是所谓的I/O复用。 
            其实这是网络模型中最为常用的模式,平时所谓的select、poll和epoll都是I/O复用模型,只是细节上略有区别,具体的区别在后面讨论。 

            读取的两个阶段有2次调用2次返回,在第一个阶段是很多I/O读取任务共用的,因此效率还是比较高的。 


    信号驱动I/O 

            信号驱动I/O我并不是很了解,目前的理解是linux类的程序下允许注册一个信号处理函数,我们可以用这种方式来处理IO,首先注册一个信号处理函数,然后应用程序继续进行,当有数据到达内核区后,会有一个信号返回给当前应用进程,当前引用进程进入信号处理过程,信号处理过程中会将数据拷贝至用户区的过程依然是阻塞的。 
            其实这里其实看出来,所谓的阻塞、非阻塞和同步、异步,其实是一件事情,只是在不同的语境下有些细微的区别而已,信号驱动I/O的第一个阶段实际上就是典型的异步通知过程。但是因为其第二个阶段需要阻塞,因此整个信号驱动I/O被归类为同步I/O。 

    异步I/O 
            异步I/O的模型其实就是两个阶段均为异步的方式,用户进程异步调用函数后,检测数据的信号,但是用户线程自身并不挂起,而是继续运行,当数据完成了2个阶段的过程,读取至用户区之后才会通知应用程序。 

    这种方式和阻塞式I/O的区别仅仅在于用户线程是否在两个阶段均阻塞。 



    模型之间的讨论 

            其实对于典型的服务器环境,基本上都是默认采用I/O复用模型的,这一点从模型自身的特性就可以看出。网络I/O中即使采用非阻塞的方式其实本身也没有太大的意义,因为没有数据到来,那处理程序也没有其他的事情要做。而且从编程的角度上来说,I/O复用这种同步的编程模式也更利于理解,不会使得程序显得很混乱。 
    关于效率问题,在上一章的讨论中以及讨论过了并不存在非阻塞效率更高的说法,只是在不同场景下有各自优势而且,但是在绝大多数场景下依然是IO复用更高效。

            下面附上几中不同的I/O状态比较图:


     

    IO复用的几中方式select、poll、epoll

    select

            首先select只有一个函数,创建、注册等待都是一次完成的。 
    特性 
            首先将fd_set从用户空间拷贝到内核区,然后注册回调函数 __pollwait。 
    回调函数的主要工作就是把当前线程挂到设备的等待队列中,不同的设备有不同的等待队列,如果该设备有个响应的响应(比如网络中读取的I/O)则会唤醒该设备等待队列上的进程,___pollwait方法会返回一个描述读写操作是否就行的mask掩码,根据这个掩码给fd_set赋值。 如果遍历fd_set都没有一个可读写的mask掩码,这调用会 schedule_timeout将select线程进入睡眠,如果设备驱动自身资源可读或者,超时一定时间限都没人唤醒,则会唤醒当代队列上的线程重新遍历fd_set判断有没有就绪的fd。 
    缺点 
            每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大 ;同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大 ,尤其是在连接数量很多,但是活跃连接并不多的情况下。 select支持的文件描述符数量太小了,默认是1024(64位系统是2048)。

    poll

            poll和select基本上类似,区别是采用链表的形式去组织数据,所以没有数量限制。但是前两个问题依然存在

    epoll

            epoll的实现和上面两者有很大的不同,epoll分为三个函数,分别表示创建,注册和阻塞三个情况。

    这样在注册时会将epoll的句柄从用户区拷贝到内核区,所以只有一次复制,而不是每次等待都要复制,不存在第一个问题。 
    epoll为每个fd指定一个回调函数,当设备唤醒的时候就会调用这个回调函数,而这个回调函数会把就绪的fd加入一个就绪链表,epoll_wait要做的工作其实就是定期查看这个链表有没有就绪的fd就好,所以不需要遍历fd,不存在第二个问题。

            而且由于不需要遍历也不存在低活跃连接数量下效率低下的问题。 epoll没有fd上限,一般1G内存可以有10w个连接,与内存大小相关,而且可以修改。不存在第三个问题。

            此外还有另一种说法,epoll采用mmap内存映射技术将内核区与用户区映射为同一片地方以减少系统复制代价,不清楚具体用在哪里。

            epoll和select、poll之间最主要的区别还是前者基于回调机制进行响应,而select和poll基于系统调用,让内核遍历所有fd进行查询是否有设备就绪。

            epoll本身还分为电平触发和边缘触发 
            电平触发(条件触发)LT模式:就是当fd就绪后进行通知,如果此次通知后没有操作响应,则下次依然通知,可用在阻塞模式也可以用在非阻塞模式。 
            边缘触发ET模式:就是当fd就绪后进行通知,但是如果此次没有响应操作,则下次不会通知。但只可以用在非阻塞模式下。 
    通常来说边缘触发效率更高,因为可以减少重复epoll的次数。

    展开全文
  • 同步异步,阻塞非阻塞是一些非常常见的概念,但是对于开发者来说往往是用到了很难说清楚。 笔者专门整理了下这方面的概念,作此文以记之。 这部分内容可能存在一些争议,如有不同意见欢迎评论交流。 概念 个人理解...
  • 对于像我这样的新手来说,同步异步,js执行原理,浏览器运行机制都有些模糊不清,但在工作的过程中遇见了许多问题没办法啊,只能去弄清楚。首先浏览器里面是有多个进程的,每个进程里面又有多个线程。然后每次打开一...
  • wait操作 get操作 std::future使用 std::async是C++11 标准库提供的一个同步或者异步执行函数模板(简单理解就是发起同步或者异步函数调用),它和std::future配合使用,std::future用于获取同步异步执行结果(简单...
  • 同步异步/阻塞非阻塞

    千次阅读 多人点赞 2019-05-27 16:47:05
    同步异步是针对应用程序与内核的交互而言。也就是上图的read操作,从缓存中读取数据,如果缓存中数据还没有准备好,如果是同步操作,它会一直等待,直到操作完成。如果是异步操作,那么它会去做别的事情,等待数据...
  • 使用qt写的请求http服务类,实现了get同步请求、get异步请求、post同步请求、post异步请求。4个方法,方便实用。
  • C#同步异步操作说明

    2013-03-14 16:22:12
    同步方法和异步方法的区别 同步方法: 调用在程序继续执行之前需要等待同步方法执行完毕返回结果 异步方法: 则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执行其它操作
  • 比易语言自带的更加完善的支持库。支持同步异步通信。带TCP,UDP组件。
  • Android 同步异步区别

    千次阅读 2017-07-06 07:01:23
    Synchronous(同步)和Asynchronous(异步)的概念最早来自通信领域。 通信的同步:指客户端在发送请求后,必须要在服务端有回应后客户端才继续发送其他请求,所以这时所有请求将会在服务端得到同步,直到服务端...
  • tcp socket同步 异步 阻塞 非阻塞 的解释.zip 基本概念:同步、异步、阻塞和非阻塞的区别 同步异步与阻塞非阻塞的区别 C++ 同步异步与阻塞非阻塞的区别
  • C语言 同步 异步

    千次阅读 2017-09-07 16:45:46
    进程同步异步的概念 1.进程同步:就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 2.异步 异步的概念和同步相对。当一个异步过程调用发出后,调用者不会立刻得到结果。实际处理这个调用的...
  • 一种是同步执行模式,还有一种是异步执行模式。同步模式即相邻两步迭代之间存在同步控制,所有任务均完成该步的工作之后,才可以启动下一次迭代计算,发往第k次迭代的消息仅在第k次迭代时对顶点可见。异步模式即相邻...
  • 同步 异步 阻塞 非阻塞 区别

    万次阅读 多人点赞 2018-09-25 10:27:27
      1、前言 ...我当时理解同步异步属于两个进程中间的协作关系,例如使用浏览器访问一个网站,需要多次请求服务端,才能加载完整个页面的内容。同步的操作如下:浏览器首先发送第一个请求,等待...
  • STM32通用同步异步收发器(USART)

    千次阅读 2017-11-30 17:05:23
    通用同步异步收发器—–USART 通讯方式: 1、串行通讯 2、异步/同步 3、全双工物理层 RS232标准 两个通讯设备的“DB9 接口”之间通过串口信号线建立起连接,串口信号线中使用“RS-232标准”传输数据信号。...
  • 理解同步异步与阻塞非阻塞的区别

    千次阅读 2019-01-09 10:44:46
    同步异步与阻塞非阻塞的概念对于很多初学者来说是一个模糊的概念,其实我们的生活中存在着很多同步和异步的例子。 同步和异步关注的是消息通信机制 在计算机领域,同步就是指一个进程在执行某个请求的时候,若该...
  • 主要介绍了JAVA同步异步、阻塞和非阻塞之间的区别,文中讲解非常细致,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
  • 使用OkHttp进行网络同步异步操作

    千次阅读 2018-05-15 11:48:30
    一、使用OkHttpOkHttp发送请求后,可以通过同步异步地方式获取响应。下面就同步异步两种方式进行介绍。1.1、同步方式发送请求后,就会进入阻塞状态,知道收到响应。下面看一个下载百度首页的例子:OkHttpClient ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 552,832
精华内容 221,132
关键字:

同步异步