前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >并发编程中的一些名称解释整理

并发编程中的一些名称解释整理

作者头像
IT学习日记
发布2022-09-13 16:04:56
3360
发布2022-09-13 16:04:56
举报
文章被收录于专栏:IT知识进阶学习

前言

  并发编程中,会涉及到许多相关的专业名词,在初始接触的时候很容易混淆和理解偏差,因此特意将常见的名称统计出来,方便学习。

并发相关词语

  • 并发的出现目的:就是为了压榨CPU性能,早期的计算机只是单进程,随着发展,不断精进,从而让有限的硬件发挥出更大的作用
  • 进程:它是OS分配资源的最小单位,线程是OS任务调度的最小单位
  • 超线程(线程撕裂者):常理来说,CPU的一个核同一时刻只能执行一个线程,所以常说的4核多线程,其实属于超线程的概念,超线程实际上就是一个ALU单元对应多个PC和寄存器组,因为CPU的切换速度非常快,所以我们会感觉同时又多个线程在执行
  • CPU的组成:PC、寄存器组(Registers)、ALU(计算逻辑单元)、Cache(三层,其中l1,l2是在核内,l3是一颗CPU内所有核共用)。PC负责存储需要执行的指令、寄存器用于存储执行的数据、ALU负责执行计算和控制、Cache用于做缓存。
  • CPU和内存之间的速度相差大概有100倍
  • CPU只负责OS给定的指令,具体的线程是由OS调度(线程调度器,线程的调度器有不同的实现算法,一般Linux的算法是CFS),线程切换的时候,会需要将不同线程的数据(Register和PC)存储在cache中,用于线程恢复。
  • 线程的切换是需要消耗资源的,所以工作的线程数并不是设置越大越好
  • 纤程:绿色线程、用户管理的线程(非OS管理)
  • 程序、进程、线程的关系:程序是一种通过编程语言编写后可以被OS执行的一个静态文件,进程则是将程序加载到内存中,获取OS分配资源,线程则是进程中具体进行任务调用的单元,它是共享进程中的资源的。
  • 线程的三大性:可见性、有序性、原子性
  • 线程的可见性本质上来说是缓存问题:为了解决CPU和内存之间的速度差异性(提高执行效率),CPU访问寄存器的数据比访问内存中的数据快得多,在CPU和内存之间加了一系列缓存(3层缓存,工业实践得出来的)
  • 缓存读取:从里到外读取:l1->l2->l3->内存,这样引出了新的问题,如何保障存在不同核之间的缓存数据一致,这个机制也叫缓存一致性协议,它是一种硬件级别的协议,可以存在不同的实现,在Intel中,常见的是MESI协议
  • 很多标准都是经过:工业实践得出来的,它并不一定是性能最好的,但它是综合性考虑后最好的选择。
  • 工业上:缓存行一般是64个字节

写在最后

  总结: 经验就是一个积累的过程,没有谁能够一步登天,所以脚踏实地才是成功的秘诀。本文只是本人在使用并发知识是遇到的问题的总结,如果有哪里存在错误,欢迎大家留言指出,希望大家共同进步!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/06/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 并发相关词语
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档