zoukankan      html  css  js  c++  java
  • 同步、异步、阻塞、非阻塞

           多线程、单线程、同步、异步、阻塞、非阻塞,都是独立的概念,只是在多数应用场景下,它们看上去一致了,所以造成了概念的混淆。

    1,在多线程语境下的概念

           在多线程语境下,用于描述任务的线程访问执行机制,同步和异步关注的是任务是否可以被同时调用,阻塞和非阻塞则关注的是线程的状态。

    同步:指代码的同步执行(synchronous invoke),一个执行块同一时间只有一个线程可以访问。

    异步:指代码的异步执行(asynchronous invoke),多个执行块可以同时被多个线程访问。

    阻塞:线程阻塞状态(thread block),表示线程挂起。

    非阻塞:线程不处于阻塞状态,表示线程没有挂起。

    2,在IO语境下的概念

           在IO语境下,用于描述IO操作,同步和异步关注的是消息发起和接收的机制,阻塞和非阻塞则是表达发起者等待结果时的状态。

    同步:是指发起一个IO操作时,在没有得到结果之前,该操作不返回结果,只有调用结束后,才能获取返回值并继续执行后续的操作。

    异步:是指发起一个IO操作时,不会得到返回,结果有发起者自己轮询,或者IO操作的执行者发起回调。

    阻塞:是指发起者在发起IO操作后,不能再处理其他业务。

    非阻塞:是指发起者不会等待IO操作完成。

  • 相关阅读:
    BZOJ3277: 串(广义后缀自动机)
    BZOJ3998: [TJOI2015]弦论(后缀自动机)
    SPOJ7258 SUBLEX
    洛谷P3808 【模板】AC自动机(简单版)
    SPOJ8222 NSUBSTR
    BZOJ2946 [Poi2000]公共串(后缀自动机)
    Codeforces Round #490 (Div. 3)
    SPOJ1811 LCS
    洛谷P3804 【模板】后缀自动机
    list排序成员函数对string对象与char*对象排序的差别
  • 原文地址:https://www.cnblogs.com/guanghe/p/13521467.html
Copyright © 2011-2022 走看看