1、同步与异步
同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)
1)所谓同步,就是在发出一个程序调用时,在没有得到结果之前,该程序调用就不返回。但是一旦调用返回,就得到返回值了。
举个例子:你打电话给客服查询你的快递单号,这个时候你一直在等待(不做其他事)直至客服告诉查询到的结果。
2)而异步则是相反,程序调用在发出之后,这个调用就直接返回了,所以没有返回结果
举个例子:你打电话给客服查询你的快递单号,这个时候你就挂断了电话(爱做什么做什么),客服查询到结果后打电话通知
2、阻塞与非阻塞
阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态.
1) 阻塞调用是指调用结果返回之前,当前线程会被挂起。
举个例子:客服查询订单时需要叫仓管查询,由于多个客服都需要仓管查询,所以仓管根据轮流给他们查询,客服就在一旁等待(或睡觉),直至结果出来才肯罢休.
2)非阻塞调用指在不能立刻得到结果之前,该调用不会阻塞当前线程。
举个例子:客服查询订单时需要叫仓管查询,这时客服就走开了,但是他会每隔一段时间就过来问仓管查询结果,直至结果出来
3、同步阻塞、同步非阻塞、异步阻塞、异步非阻塞
其实就是结合,同步和异步可以理解为客户外边的相关打电话咨询客服,而且阻塞与非阻塞则发生在查询内部,他们直接结合就等于把例子结合起来理解.
4、select/poll
假设你有100个信箱,每当你要查看有没有信件时,你就每个信箱的翻看是否有信件。
这里100个信箱等于有100个链接、当内核处理好时就把结果放到信箱里面去,而select就一直轮询查看100个信箱有结果返回
5、epoll
同样的你有100个信箱,但是每次有邮件员投递的时候都会发信息给你,这样你每次就要到相对应的信箱里拿就可以了
版权声明:未经博主允许不得转载。http://www.smister.com/post-35.html