1.同步与异步
同步与异步关注的消息通讯机制,针对应用程序与内核的交互而言的。
同步:发出一个调用时,在没有得到结果之前,该调用就不会返回。但是一旦调用返回,就得到了返回值,换句话说就是由调用者主动的等待调用的结果。执行一个操作之后,等待结果,然后才继续执行后续操作
异步:异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成。。执行一个操作后,可以去执行其他操作,然后等待通知再回来执行刚才没有执行完得操作。
2.阻塞与非阻塞
阻塞和非阻塞关注的是程序在等待调用结果时的状态。
阻塞调用:是指调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后,才会被返回。进程给CPU传达一个任务之后,一直等待CPU处理完成,然后才执行后面的操作。
非阻塞调用:是指在能立刻得到结果之前,该调用不会阻塞当前的线程。进程给CPU传达任务之后,继续处理后续的操作,隔段时间再来询问之前的操作是否完成,这样的过程其实也可以被叫做轮询。
例子: