zoukankan      html  css  js  c++  java
  • 一、多线程基本概念

    并发

    进程是资源分配的基本单位,切换进程时需要重新读取内存;

      比如说:QQ登录时,就会把QQ的相关代码(指令)从磁盘读到内存中,再读入CPU,存入寄存器中,再通过ALU执行指令;如果现在想登录微信,就需要为微信重新分配内存空间,然后把微信的代码拷贝到CPU寄存器中再执行。

    而线程是资源调度的基本单位,只需要寄存器保留运行状态即可。

      比如说:线程A在ALU中执行了一段指令,但如果此时需要切换线程B,就可以把当前的执行情况先存入CPU缓存中,以便切换回来时能够接着执行。线程切换时不会重新分配空间。

      使用并发的原因:同时执行多个事情,提高性能,多线程开发适合多核处理器。

    线程环境:

    线程存在于进程之中,进程内所有全局资源对于内部每个线程都是可见的。

    进程内典型全局资源如下:

    1)代码区:这意味着当前进程空间内所有的可见的函数代码,对于每个线程来说,也是可见的

    2)静态存储区:全局变量,静态空间

    3)动态存储区:堆空间

    线程内典型的局部资源:

    1)本地栈空间:存放本线程的函数调用栈,函数内部的局部变量等

    2)部分寄存器变量:线程下一步要执行代码的指针偏移量

    线程的使用

    1. 一个进程至少有一个线程,在C++中,main()函数是主线程的入口函数。
    2. 线程不是越多越好,需要看CPU的执行密度,比如:一个线程执行和等待的时间是1:3,那么4个线程比较ok。
    3. 从C++11开始,C++本身增加了对多线程的支持,意味着可移植性。

    心之所愿,永不相忘
  • 相关阅读:
    js炫酷效果
    程序员的执着
    [心得]docker学习笔记
    [心得笔记]多线程之间的内存可见性问题
    Docker入门
    [心得体会]jvm
    redis学习总结
    [心得]redis集群环境搭建的错误
    Linux安装mysql5.7版本
    Cent OS下安装JDK11
  • 原文地址:https://www.cnblogs.com/zgll/p/15278690.html
Copyright © 2011-2022 走看看