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++本身增加了对多线程的支持,意味着可移植性。

    心之所愿,永不相忘
  • 相关阅读:
    asp.net保存远程图片
    JS中的转义字符
    SQL_统计某列的和
    SQL Server 出错自动回滚
    SQL中的循环语句_类似FOR循环
    转 C# 控制IE
    抓取html 写正则
    正则截取内容
    用于测试的字符串
    C#关闭IE相应的窗口 .
  • 原文地址:https://www.cnblogs.com/zgll/p/15278690.html
Copyright © 2011-2022 走看看