zoukankan      html  css  js  c++  java
  • 堆栈和堆栈大小

     

    正在执行的程序为执行该程序的初始(或主)线程维护一个主堆栈,并为每个从属线程维护不同的堆栈。堆栈是临时内存地址空间,用于保留子程序或函数引用调用期间的参数和自动变量。如果线程堆栈的大小太小,则可能会出现堆栈溢出,从而导致无提示数据损坏或段故障。

    使用 f95 -stackvar 选项编译 Fortran 程序会强制在堆栈中分配局部变量和数组,就好像它们是自动变量。显式并行化的程序暗指对 OpenMP 程序使用 -stackvar,因为该选项可提高优化器将循环中的调用并行化的能力。(有关 -stackvar 标志的讨论,请参见 Fortran 用户指南。)但是,如果为堆栈分配的内存不足,该使用会导致堆栈溢出。

    使用 limit C-shell 命令或者 ulimit Bourne 或 Korn shell 命令可显示或设置初始线程(或主线程)的堆栈大小。一般而言,初始线程的缺省堆栈大小为 8 MB。

    OpenMP 程序的每个从属线程均具有其自身的线程堆栈。此堆栈模拟初始(或主)线程堆栈,但对于线程是唯一的。线程的 PRIVATE 数组和变量(对于线程是局部的)在线程堆栈中分配。在 32 位 SPARC V8 和 x86 平台上,缺省大小为 4 MB;在 64 位 SPARC V9 和 x86 平台上,缺省大小为 8 MB。从属线程堆栈的大小通过 OMP_STACKSIZE 环境变量来设置。

  • 相关阅读:
    AB测试原理及样本量计算的Python实现
    数据分析-A/B test
    数据分析-分类分析
    数据分析-漏斗模型(AARRR模型)
    置信区间的I型错误和II型错误
    tableau 计算字段
    tableau数据分层、数据组、数据集
    tableau 地图
    tableau 进阶
    tableau 基础
  • 原文地址:https://www.cnblogs.com/caozengling/p/5289312.html
Copyright © 2011-2022 走看看