网络编程中几个常见的易错概念

并行和并发

  • 并发(一个人同时做多件事):指的是在一个时间段内,有几个程序在CPU上运行,但是任意时刻只有一个程序在CPU上运行,这种情景叫并发。(泡茶:洗杯子、放茶叶、烧水)

  • 并行(多个人同时做多件事):指的是任意时刻有多个程序同时运行在多个CPU上,所以最大并行数跟CPU的核心数相同。

同步和异步

(关心被调用方的行为:老板是否在通信中回复结果)

  • 同步和异步关注的是消息通信机制

  • 同步是指代码在调用IO操作时,必须等待IO操作完成才返回的调用方式。

  • 异步是指代码在调用IO操作时不必等待IO操作完成就返回的一种调用方式。

eg:给书店打电话问老板有没有软件测试这本书
老板说:“你先别挂电话,我先去找找。”一会儿,老板找到了,和你说有。这种情景叫同步。
老板说:“你先挂了,等我找一找。” 这种情景叫异步。

  • 异步如何得到结果? 一种是回调,一种是轮询
    如果老板找到之后主动打电话给你,这种情况叫回调。
    老板不给你回电话,你给老板隔5分钟打一次电话,这种情况叫轮询。

阻塞和非阻塞

(关心程序在等待调用结果时的状态,也就是调用方的状态,个人)

  • 阻塞是指调用方当前的线程被挂起

  • 非阻塞是指调用方线程不会被挂起,而是立即返回做其他事情
    eg:在等待老板的结果的过程中,如果你在傻傻等,就是阻塞;如果你在等待的过程中去做其他事情了,比如刷刷微博啥的,就是非阻塞。

  • 阻塞与非阻塞与同步异步没关系

总结

  • 同步阻塞
    没挂电话,你在老板让你等待的过程中一直傻傻等着老板回复

  • 同步非阻塞

    没挂电话,你在老板让你等待的过程中做了其他事情,直到老板回复

  • 异步阻塞
    电话挂了,你啥也不做,傻傻等着老板的回复

  • 异步非阻塞
    电话挂了,你去做其他事情了,直到老板回复

发布了33 篇原创文章 · 获赞 0 · 访问量 942

猜你喜欢

转载自blog.csdn.net/nickyff/article/details/104518993