并行、并发、同步、异步、阻塞、非阻塞

本身的不肯定性理解:并发

(同步:某个线程调用一直等待系统调用结果返回,才会执行)异步

(异步:某个线程调用没有等待系统调用结果返回,就直接执行)socket

(阻塞:)函数

(非阻塞:)线程

并行:多个CPU核心,不一样的程序就分配给不一样的CPU来运行。可让多个程序同时执行。回调函数

并发:单个CPU核心,在一个时间切片里一次只能运行一个程序,若是须要运行多个程序,则串行执行。同步

同步与阻塞,异步与非阻塞的区别:
  同步与异步是对应的,它们是线程之间的关系,两个线程之间要么是同步的,要么是异步的。
  阻塞与非阻塞是对同一个线程来讲的,在某个时刻,线程要么处于阻塞,要么处于非阻塞。
  阻塞是使用同步机制的结果,非阻塞则是使用异步机制的结果。it

1、概念效率

1.     同步:调用时,在没有获得结果以前,该调用就不返回,按照这个定义,绝大多数函数都是同步调用。通常而言,咱们在说同步、异步的时候,特指那些须要其余部件协做或者须要必定时间完成的任务。
最多见的例子就是 SendMessage。
2.     异步:调用者不会马上获得结果,调用发出后,经过状态(效率低)、通知,或回调函数来通知调用者。PostMessgae。
3.     同步异步的区别:如何通知调用者获得调用结果,同步等待调用完成,异步经过状态、通知,或回调函数。
4.     阻塞:调用结果返回以前,当前线程会被挂起。socket的read/write/recv
5.     同步与阻塞的区别:同步当前线程仍是激活的,只是从逻辑上当前函数没有返回而已。
6.     非阻塞:不能马上获得结果以前,该函数不会阻塞当前线程,而会马上返回。
7.     异步与非阻塞的区别:非阻塞是马上返回调用结果,异步不会马上返回调用结果,而是经过状态,通知,回调。
8.     异步与阻塞的关系:异步也会调用阻塞的函数,好比用select 函数,当select 返回可读时再去read 通常都不会被阻塞,可是read是一个阻塞的函数。
9.     同步异步和阻塞非阻塞之间的区别:同步异步是如何通知的概念,阻塞和非阻塞是如何执行的概念。
2、        同步/异步与阻塞/非阻塞的组合分析
同步阻塞形式: 等待执行结果是一直等待,执行时线程挂起(未对fd 设置O_NONBLOCK 标志位的read/write 操做)
同步非阻塞形式:等待执行结果是一直等待,执行时函数当即返回(对fd 设置O_NONBLOCK 标志位的read/write 操做)
异步阻塞形式:不是在处理消息时一直等待(经过状态、通知,或回调函数通知主调函数select ),而是在等待消息被触发时被阻塞(线程挂起).若是select 函数,的最后一个timeout 参数为NULL,程序就会中止在select这里。
异步非阻塞形式:在处理消息是不等待,在执行消息是也不等待。select

相关文章
相关标签/搜索