1.线程和进程的区别
进程:一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程。比如在Windows系统中,一个运行的就是一个进程。
线程:进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。比如一个ORB_SLAM2的程序就是一个进程,其内部有多个线程,如:追踪线程、局部建图线程、回环检测线程等。
区别:进程是cpu资源分配基本单位。
线程是cpu调度的基本单位。
进程拥有独立的资源,线程不拥有系统资源。
同一进程的线程共享本进程的地址空间,而不同的进程地址空间是独立的。
进程拥有独立的资源,线程不拥有系统资源,但可以访问隶属于进程的资源.
2.线程和并发的关系
多线程是为了让业务流程并发执行,因为IO阻塞问题,所以执行效率自然提高。
进程之间可以并发执行,同一个进程的多个线程之间也可以并发执行。
单核CPU:某一个时刻只能执行一个任务,由操作系统调度,每秒钟进行多次“任务切换”,来实现并发的假象(不是真正的并发),切换任务时要保存变量的状态、执行进度等,存在时间开销;
、gpu和多线程的关系
CPU:是*处理器。一个电脑一般只有一个cpu,一个cpu上一般有多个核心,CPU的核心数指的是硬件上存在着几个核心,核心数相当于cpu的大脑数量,一个核心就是一个物理线程,核心数越多,能够同时处理的线程数量就越多。
因特尔的超线程技术可以把一个物理线程模拟出两个线程来用,充分发挥CPU性能。比如说cpu上的一个核心可以同时处理两个线程。
GPU:GPU是显卡的处理器,称为图像处理器。GPU是显卡的最主要部件,一个专门的图形核心处理器。对于GPU来说,它的任务是在屏幕上合成显示数百万个像素的图像——也就是同时拥有几百万个任务需要并行处理,因此GPU被设计成可并行处理很多任务,而不是像CPU那样完成单任务。
CPU和GPU联系
CPU和GPU由PCI总线连接,编程时,CPU来控制,GPU具体负责执行。有了GPU,CPU就从图形处理的任务中解放出来,可以执行其他更多的系统任务,这样可以大大提高计算机的整体性能。
GPU 核心和 CPU 核心
CPU 核心比较重,用来处理非常复杂的控制逻辑,以优化串行程序执行。
GPU 核心较轻,用于优化具有简单控制逻辑的数据并行任务,注重并行程序的吞吐量。
cpu核心数量很少,gpu核心数量很多,简单的多任务程序适合交给gpu来运算。