多进程与多线程
多进程
:多进程可实现同一时间点多个任务并行。如:电脑同时运行多个程序,比如同时运行qq和微信,qq和微信就是两个不同的进程
多线程
: 一个应用程序中有多个执行部分可同时执行,同一时间完成多项任务,以提高资源使用效率。如:QQ软件可同时实现播放音效、消息发送等功能
比较:
参考链接:https://blog.csdn.net/hairetz/article/details/4281931.
并行与并发
并行处理(Parallel Processing)
:是计算机系统中能同时执行两个或更多个处理的一种计算方法。并行处理可同时工作于同一程序的不同方面。并行处理的主要目的是节省大型和复杂问题的解决时间。并发处理(concurrency Processing)
:指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机(CPU)上运行,但任一个时刻点上只有一个程序在处理机(CPU)上运行并发的关键是你有处理多个任务的能力,不一定要同时
。并行的关键是你有同时处理多个任务的能力。所以说,并行是并发的子集
图解:
同步与异步
- 同步就是指一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会一直等待下去,直到收到返回信息才继续执行下去。
- 异步是指进程不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态。当有消息返回时系统会通知进程进行处理,这样可以提高执行的效率。
- 举个例子,
打电话时就是同步通信,发短息时就是异步通信
。
Socket的理解
参照网上一些大佬的理解,在这里做一个总结:
- socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
- socket是位于两个层面中间的一个参与者,服务于两方,http是应用层协议,解决如何包装数据,TCP/IP协议是传输层协议,主要解决数据怎么在网络中传输,一个网络协议 + 一个ip + 一个端口号,就组成了一个socket
图解:
参考链接:https://www.cnblogs.com/eleclsc/p/5812060.html.
- 看到一个很形象的比喻:这里有一台电脑(server),一个耳机(client),一个u盘(clinet),一个鼠标(client),
socket就可以想象成笔记本电脑上的usb接口、音频接口,
耳机需要连接到电脑听歌,需要用到音频接口,u盘需要链接电脑拷贝资料,需要用到usb接口,鼠标需要链接电脑才可以操作系统光标,需要用到usb接口,socket就负责帮助这些外接设备找到笔记本电脑中相对应的驱动以便他们完成自己的工作,而对于电脑而言,要利用U盘、利用耳机、利用鼠标也需要有对应的插口(socket)支持。 - 原文链接: https://blog.csdn.net/EJEEMT/article/details/90212312.