• 学习【线程、进程、并发、并行、CPU、GPU】


    【侵删】 参考:

    面试必考的:并发和并行有什么区别? - 腾讯云开发者社区-腾讯云 (tencent.com)

    CPU与GPU并行计算联系与区别_ljytower的博客-CSDN博客_gpu并行

    多线程 ---并发与并行概念总结_黄复贵的博客-CSDN博客_多线程并发

    多进程详细讲解_哎呀姜的博客-CSDN博客_多进程

    https://blog.csdn.net/qq_36287702/article/details/105612182

    一、进程和线程

    进程(Process)和线程(Thread)都是操作系统中的基本概念,它们之间有一些优劣和差异一个

    【进程】

    是一个具有独立功能的程序关于某个数据集合的一次运行活动。多进程,就好比同时打开了Word,Excel和Visio,他们都是不同的程序运行活动,即多个进程同时启动而已。

    【线程(执行路径)】

    线程,是一个执行中的程序活动(即进程)的多个执行路径,执行调度的单位。线程依托于进程存在,在进程之下,可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间也叫做【线程栈】。

    【多线程】

    指在一个进程下有多个线程。各个线程执行自己的任务,这些线程可以“同时进行”。多线程强调”同时,一起进行“,而不是单一的顺序操作。

    Thread类定义了多线程,通过多线程可以实现并发或并行。

    多线程实现的是并发还是并行?上多线程可能被分配到一个CPU内核中执行,也可能被分配到不同CPU执行,分配过程是操作系统所为,不可人为控制。所有,多线程是并发还是并行的?都有可能。
     

    一个线程只属于一个进程。进程间相互独立,同一进程的各线程间共享。某进程内的线程在其它进程不可见。而且需要注意的是,线程不是一个可执行的实体。

    多进程优点:

      1、每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;

      2、通过增加CPU,就可以容易扩充性能;

      3、可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;

      4、每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大。



    二、并发和并行

    并发和并行最开始都是操作系统中的概念,表示的是CPU执行多个任务的方式。

    windows操作系统,是可以"同时"做很多件事儿的。比如我们可以一边看电影,一边聊QQ;一边听歌,一边打游戏。

    但是,这所谓的"同时",在操作系统底层可能并不是真正的意义上的"同时"。

    对于单CPU的计算机来说,在CPU中,同一时间是只能干一件事儿的。为了看起来像是“同时干多件事”,Windows这种操作系统是把CPU的时间划分成长短基本相同的时间区间,即”时间片”,通过操作系统的管理,把这些时间片依次轮流地分配给各个应用使用。

    这样,给用户的感觉是他在同时的进行听歌和打游戏,实际上,在操作系统中,CPU是在游戏进程和音乐播放器进程之间来回切换执行的。

    操作系统时间片的使用是有规则的:某个作业在时间片结束之前,整个任务还没有完成,那么该作业就被暂停下来,放弃CPU,等待下一轮循环再继续做。此时CPU又分配给另一个作业去使用。

    由于计算机的处理速度很快,只要时间片的间隔取得适当,那么一个用户作业从用完分配给它的一个时间片到获得下一个CPU时间片,中间有所”停顿”,但用户察觉不出来。

    并发

    并发(Concurrent),在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。

    并行

    并行(Parallel),当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。【在有多个CPU的情况下,才会出现真正意义上的『同时进行』。】

    并发是指在一段时间内宏观上多个程序同时运行。并行指的是同一个时刻,多个任务确实真的在同时运行。

  • 相关阅读:
    mongodb
    先广度后深度,打开编程视野
    解开索引迷局:聚簇索引与非聚簇索引的差异大揭秘!
    探索FSM (有限状态机)应用
    数字化转型背景下,MES管理系统的新特征是什么
    【新知实验室】腾讯云TRTC接入测试以及状态同步功能重点验证
    Debian常用命令
    论文笔记:Code Llama: Open Foundation Models for Code
    Linux多线程C++版 线程基础 进程和线程关系 线程分类 Linux线程实现 线程表示
    软件测试为什么这么“火”,是不是被“炒作”起来的?
  • 原文地址:https://blog.csdn.net/weixin_63016274/article/details/127745685