• 深入理解计算机系统——第12章:多线程中共享变量


    多线程程序中的共享变量:

    一个线程是共享的当且仅当多个线程引用这个变量的某个实例。

    12.4.1 线程存储器模型

    (1)寄存器是不共享的,而虚拟存储器总是共享的

    (2)线程的栈保存在虚拟地址空间的栈区域,并且通常被相应的线程独立的访问。

    (3)但线程栈是不对其他线程设防的。如果一个线程以某种方式得到其他线程栈的指针,那么他就可以读写这个栈

           的任何部分了。

    12.4.2 将变量映射到存储器。

    全局变量:

    (1)全局变量是定义在函数之外的变量。

    (2)在运行时,虚拟存储器的读写区域只包含全局变量的一个实例,任何线程都可以引用。

    本地自动变量:

    (1)就是局部变量,定义在函数内部但是没有加static的变量。

    (2)每个线程都包含了它自己所有的本地自动变量的一个实例,即使所有线程共有一个例程是也是如此。

    本地静态变量:

    (1)定义在函数内部加static的局部变量

    (2)和全局变量效果一样,只有一个实例。

    12.4.3 共享变量

    (1)当且仅当它的一个实例被一个以上线程引用。

    (2)本地自动变量也能被共享的。

  • 相关阅读:
    1-27 awk 基本使用
    计算机网络(一)带宽
    CRC检错技术原理
    Wireshark漫谈(一)
    SQL字符串拼接
    MySQL学习笔记(二)
    MySQL学习笔记(一)
    Java 反射机制(二)
    Java 反射机制(一)
    Windows使用MySQL数据库管理系统中文乱码问题
  • 原文地址:https://www.cnblogs.com/yanliang12138/p/4794918.html
Copyright © 2020-2023  润新知