美文网首页
2023-07-14 多线程加深理解

2023-07-14 多线程加深理解

作者: pyNeverGiveUp | 来源:发表于2023-07-13 11:11 被阅读0次

我们用一个例子来阐述线程、核心和函数之间的关系,假设有遛狗、扫地两类工作要做:

遛狗就是为狗系上绳子然后牵着它在小区里溜达一圈,这句话就描述了遛狗的逻辑,即对应到函数定义,它是一个对应到设计的静态的概念

每项工作,最终需要人去做,人就对应到硬件:CPU/Core/VCore,是任务被完成的物质基础

那什么对应软件线程? 任务拆分。

一个例子

假设现在有2条狗需要遛、3个房间需要打扫。可以把遛狗拆成2个任务,一个任务是遛小狗,另一个任务是遛大狗;打扫房间拆分为3个任务,3个房间对应3个任务,执行这样的拆分策略后,将会产生2+3=5个任务。但如果只有2个人,2个人无法同时做5件事,让某人在某时干某事由调度系统负责。

如果张三在遛小狗,那就对应一个线程被执行,李四在扫房间A,则表示另一个线程在执行中,可见线程是一个动态的概念。

软件线程不会一直处于执行中,原因是多方面的。上述例子是因为人手不够,所以遛大狗的任务还处于等待被执行的状态,其他的原因包括中断、抢占、条件依赖等。比如李四扫地过程中接到一个电话,他需要去处理更紧急的事情(接电话),则扫地这个事情被挂起,李四打完电话后继续扫地,则这个线程会被继续执行。

如果只有1个人,则上述5个任务依然可以被依次或交错完成,所以多线程是一个编程模型,多线程并不一定需要多CPU多Core,单CPU单Core系统依然可以运行多线程程序(虽然最大化利用多CPU多Core的处理能力是多线程程序设计的一个重要目标)。1个人无法同时做多件事,单CPU/单Core也不可以,操作系统通过时间分片技术应对远多于CPU/Core数的多任务执行的挑战。也可以把有些任务只分配给某些人去完成,这对应到CPU亲和性和绑核。

相关文章

  • Java的CountDownLatch笔记,让你加深对多线程的理

    Java的CountDownLatch笔记,让你加深对多线程的理解

  • Java多线程的研究

    最近看了些关于多线程的文章,感觉还没有很深刻地理解,决定自己动手写几个例子来测试一下,加深对多线程的理解。 基础入...

  • iOS进阶之多线程

    写在前面 在平时的公司项目开发过程中,虽然几乎用不到多线程,但是对于了解某些三方实现原理、加深对多线程概念的理解 ...

  • 重构加深理解

    突破 何为突破,DDD的实践过程是渐进式的。你的重构与回报不是呈线性关系的。通常会在具体的某个点会出现一个飞跃。这...

  • 加深理解Optional

    Swift语言很重要的一个特征就是加入了Optional,刚接触时Optional的理解就是一个可能为nil的变量...

  • Java 多线程(三)优化任务执行

    本篇文章通过服务器通信和页面渲染两个功能的实现来加深多线程中Future和Executor的理解。 服务器通信 串...

  • leetcode 102. 二叉树的层次遍历

    加深理解。

  • DCG的加深理解

    具体运行结果大家可以写写看看,我总结一下自己的理解。 同步操作:都不会开启新的线程,所有操作都在当前主线程中完成,...

  • 分类可以加深理解

    大家可能注意到过,我们国家是有核心价值观的,想一想是很多二字词语的组合,只是这个价值观字数比较多,难以方便的记住。...

  • 顺势学习,加深理解

    风娃娃教学反思 《风娃娃》是人教版二年级上册的一篇浅显易懂的优美的童话故事,语言生动活泼 ,富有儿童情趣,。我 采...

网友评论

      本文标题:2023-07-14 多线程加深理解

      本文链接:https://www.haomeiwen.com/subject/qmjmudtx.html