今天是2月28日,本来的想法是每月一两篇,但是时间有点太匆忙,在这里也想向大家说一说,时间很少,愿各位好好珍惜,今天谈一谈多线程,如同其文字描述一样,线程很多,这也是多线程存在的原因,那首先什么是多线程呢,在这里,表明一下我的理解方式和我对多线程学习采用的一种套路。

  首先,我是一个想象流,很多事情是可以通过想象空间进行理解的,文字性的东西总归有它的约束存在,不可能有什么是可以一句话概括其所有,其实.NET 甚至是很多的编程语言,内部都是由生活的抽象得到的,有时候,很多没有理解的技术点,或是没有遇到的,没有经历过的解决一件事情的办法,在程序中也可以得到认识,犹如读了很多感悟生活,感悟人生的书,只不过我们的许多见解是在程序中得到的。

  现在,谈一谈,多线程的想象空间,最初学习时,看到多线程的概念,和各种实现多线程的方法,我是拒绝的,感觉太难了,完全没有逻辑性可言,但是当我用想象空间进行学习时,压力几乎消失了,比如说一个进程中开了四个线程,其中一个主线程,三个子线程,可以好比如说四座相互平行的桥,桥下是水,其中主线程是作为主桥,来往的车辆最多,而其它三个副桥暂时封闭,当需要运行多个任务并且希望时间又不浪费,那么三个副桥就开通了,四桥同时通车,多线程的概念也就结束了,什么? 这么简单,  对 就是这么简单,毕竟那是我们生活的抽象。

  而多线程还是没给一个定义呢,之前已经说了,文字性的东西不足以描述一个事情,我们只需要知道它的想象即可,桥与桥之间是相互独立的,桥上的资源是相互独立的,并且都是一样的,也就是在磁盘中,克隆出相同的资源,但是代码是只有一份的,运行的时候我们可以重复使用。

说说.NET中多线程的实现方式:

  首先需要知道,多线程总共有的几种名词:Thread ThreadPool Task Parallel  await/async 就这么几种,并且由于前两种的使用是几年前的定义其中用的委托还不是.NET4.0定义的Action和Func这种委托,因此使用的一般是以前的应用程序,但是不是说他们已经淘汰了,只不过后面有更方面的使用形式,前期的只是失去了光辉,其中await/async理解上比较复杂,实际掌握的人还是不多,使用比较多的还是Task和Parallel,我比较喜欢使用Parallel,简单粗暴,并且主线程也在执行中,没有太大的浪费,顺便提一句,Task Parallel 都是基于线程池才有的。线程想要通过程序调试去理解,是很难的,记得听到一个朋友说,她想调试下线程,然后理解它,但是每一次都是不一样的结果,其实这也反应了一个问题,线程的不可预测性,并且当线程数量很多时,线程的启动和结束都是无序的,线程的执行能力也是不一样的,想要通过调试理解,由此也是很困难的​​

  再次提到想象空间,通过它,理解多线程来说不是什么难事,如前面的例子,四座副桥上尽管都是在跑着汽车,但是呢谁能保证哪座桥汽车最先没有呢,结果的不可预测性,在现实生活中也是的,假设你只能看到四座桥的风景,车来车往是否结束都不知道,能否保证那座桥上的汽车已经跑完了呢,答案也是无法确定。

  以上所说了这么多文字,也套用了我说的里面那句话,文字不足矣描述需要的信息,但是我想表达的想象空间,希望能帮助碰上瓶颈的朋友们过了多线程这道坎,并且由于每个人对多线程想象空间的建模不一样,这是我碰到过的,有人理解多线程为管道,有人理解为马路,都是不错的。并且,也许在一部分人中,不需要这样的想象空间,那也可以帮助下需要的人讲解下。

  好了到此结束了,时间很紧迫,估计下一次也不知道什么时候才有时间写下一篇自己的见解。珍惜时间吧,Everyone!
​​​​​​​​​​​

转载于:https://www.cnblogs.com/CKExp/p/10520095.html

针对于多线程概念的理解相关推荐

  1. 对线程与进程的区别以及对多线程并发的理解

    一.线程与进程的区别 先简单说说线程与进程的概念: (1)进程是指一个内存中运行的应用程序,比如在Windows系统中,一个运行的exe就是一个进程. (2)线程是指进程中的一个执行流程. 区别: 一 ...

  2. java多线程概念、实现、状态和生命周期、同步、通信

    1.多线程概念 1.1通俗理解 高速公路收费站(进程)的多个收费匝道(线程): 银行柜台(进程)的多个办事窗口(线程): 浏览器的多窗口,多标签:迅雷的多任务下载等. 1.2进程和线程关系 进程的调度 ...

  3. 开环与闭环概念的理解

    开环与闭环概念的理解 开环与闭环是自动控制原理里面的概念,在电路设计里面也经常用到,像是运放电路,时钟电路,开关电源电路等.用是用到了,但是真的要你针对这两个概念讲出个ABCD时就.... 1 开环系 ...

  4. Linux多线程——概念

    目录 前言 一.线程的概念 1.1 什么是线程 1.2 线程的优点 1.3 线程缺点 1.4 线程异常 1.5 线程用途 1.6 Linux进程和线程对比 1.7 关于进程和线程的问题 1.7.1 P ...

  5. JAVA_多线程(硬件和软件多线程概念)

    多线程的概念 什么是多线程 线程与进程的区别 多线程的优缺点 什么是多线程 提到多线程那肯定就要讲讲单线程! 单线程 在程序执行时,所走的程序路径按照连续顺序排下来,前面的必须处理好,后面的才会执行. ...

  6. 浅谈对seo概念的理解

    个人认为与微信一样,搜索引擎有固定的用户群体,有人有流量的地方,就存在商机或者利益,seo的概念就是搜索引擎优化,其目的是在搜索引擎中获得精准用户,获得流量.从更深层次方面看,利用seo做自然排名获得 ...

  7. Spring Security 实战干货: RBAC权限控制概念的理解

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 码农小胖哥 来源 | 公众号「码农小胖哥」 1 ...

  8. 架构漫谈(二):认识概念是理解架构的基础

    原文:架构漫谈(二):认识概念是理解架构的基础 架 构漫谈是由资深架构师王概凯Kevin执笔的系列专栏,专栏将会以Kevin的架构经验为基础,逐步讨论什么是架构.怎样做好架构.软件架构如何落地.如 何 ...

  9. BlockChain:区块链技术基础概念综合理解——个人总结

    BlockChain:区块链技术基础概念综合理解--个人总结 目录 区块链的进阶与意义 1.区块链技术的进阶 2.区块链技术三大意义-传递价值.建立可信用环境.提高效率和降低成本 1.传递价值 2.建 ...

最新文章

  1. C# 多线程并发锁模式-总结
  2. cygwin编译verilator_Sublime text3 + Verilator 实现自动语法检错
  3. 陈震学的什么计算机专业,一起来看看陈震学长为我们分享的前沿技术发展趋势及自己的思考吧!...
  4. 在vue项目中操作元素ref案例;
  5. 异常单据锁定涉及的数据库表
  6. QuartusII-项目工程的时序仿真
  7. 沉思录之面向对象随想
  8. 手机麦克风声音太大_让手机麦克风声音变大的软件
  9. 董明珠下台 格力还能一统智能家居吗?
  10. hibou 主界面自定义侧滑
  11. 网记者采访时,一直称李某萍为“妻子”
  12. c语言ascii码字符串转16进制,C语言 16进制与ascii码互转
  13. 利用android开源库android-gif-drawable加载gif格式图片
  14. 【艺工交叉】艺术系自画像作业赏析
  15. 基于机器学习场景,如何搭建特征数据管理中台?
  16. APP用户生命周期价值分析与测量
  17. 楼板的弹性计算和塑形计算_双向板计算的弹性算法和塑性算法
  18. 分布式一致性协议三部曲-深入理解一致性协议Paxos
  19. 开源节流系列之工程施工篇
  20. 清华大学教授AI领域创业,能否打破中美印三足鼎立僵局?

热门文章

  1. MySql数据库查询结果用表格输出PHP代码示例
  2. Django分页的基本实现办法
  3. 高精度模板 c++/类封装
  4. 基本蚁群算法的C++源程序
  5. linux下两个进程可以同时打开同一个文件吗?返回的文件描述符一样吗?
  6. 把指定用户的命令写在/home/etc/rc.local中,系统开机时就会自动执行指定用户的命令。
  7. C++ Virtual详解
  8. 如何开始学习以太坊及区块链
  9. 常考数据结构与算法:异或操作
  10. Zuul Gateway 网关