标签:概念 需要 性问题 span 不同 一致性 高性能 消息 资源
一、基本概念理解
并发:一个程序同时执行多个独立的任务,并发的主要目的是提高性能(同时可以做多个事情)
以前的单核CPU,某一时刻只能执行一个任务, 有操作系统调度,每秒执行多次所谓的“任务切换”,实现并发的假象。而且上下文切换需要时间开销(比如操作系统要保存你切换时的各种状态,变量或状态的存储,执行进度信息,都需要时间开销)
对于多核CPU,如果任务数小于核数,可以实现真正意义上的并发(硬件并发)
进程:可执行程序运行起来,就叫创建了一个进程
线程:每个进程(执行起来的可执行程序)都有一个主线程(自动生成,启动),每个进程只能有一个主线程
实际上运行程序的时候,实际上是进程的主线程执行main()函数中的代码,主线程与进程的生存期相同
所以可以把进程理解为 :用来执行代码的,一条代码的执行通路
多线程:除了主线程之外,我们可以用代码来创建其他的线程,每创建一个新线程,就可以在同一时刻,多干一件不同的事情。
线程并不是越多越好,每个线程都需要一个独立的堆栈空间(约1M),多线程并发时,线程之间的切换要保存很多中间状态。切换回耗费程序本该运行的时间,所以线程不是越多越好。
多线程如果同时访问同一块资源效率不高,但如果同时访问不同的资源,多线程的效率会很高
二、并发
1、多进程并发
进程间通信:同一台电脑上:管道通信、文件通信、消息队列、共享内存
不同电脑上:socket通信技术
2、多线程并发
单个进程中,创建了多个线程,每个线程都有自己独立的运行路径,但是一个进程中所有线程共享地址空间(共享内存),例如:全局变量,全局指针,全局引用都可以在线程之间传递。所以使用多线程开销远远小于多进程。
共享内存带来的问题,数据一致性问题(多个线程都要往一块内存空间存储数据)
3、小结
和进程相比,线程的优点
(1)线程启动速度更快,更轻量级
(2)系统资源开销更少,执行速度更快,比如共享内存这种通信方式比任何其他的通信方式都快
缺点:
(1)要小心处理数据的一致性问题
标签:概念 需要 性问题 span 不同 一致性 高性能 消息 资源
原文地址:https://www.cnblogs.com/zhiminzeng/p/13174611.html