关于go程对外部变量的引用
2014-10-09 18:46
225 查看
假设有个函数A,A内有多个局部变量,并开启了一个go程B,B直接使用了A的局部变量(调用参数/内部参数)。
很明显的是,每一次调用A,开启的go程都应该只和当时的A的内部变量环境有关,否则程序就要乱套了。
这一点在任何语言里都是必须的,go也是如此。
但是,这就带来一个问题,即:A执行完毕后,其占用的数据堆栈无法被释放(因为要维持其开启的go程的外部环境)。
如果A占用的堆栈相当庞大的话,会导致严重的内存浪费。
因此,新开的go程应尽量减少对外部环境的依赖,尤其是对外部函数局部变量的引用;如果需要使用,则应尽可能的将使用的变量作为参数传递给go程。
如此,避免对外部函数环境依赖的go程,即可以被编译器进行更好的优化。
很明显的是,每一次调用A,开启的go程都应该只和当时的A的内部变量环境有关,否则程序就要乱套了。
这一点在任何语言里都是必须的,go也是如此。
但是,这就带来一个问题,即:A执行完毕后,其占用的数据堆栈无法被释放(因为要维持其开启的go程的外部环境)。
如果A占用的堆栈相当庞大的话,会导致严重的内存浪费。
因此,新开的go程应尽量减少对外部环境的依赖,尤其是对外部函数局部变量的引用;如果需要使用,则应尽可能的将使用的变量作为参数传递给go程。
如此,避免对外部函数环境依赖的go程,即可以被编译器进行更好的优化。
相关文章推荐
- 关于block引用外部变量
- 关于编译eMule0.48a 提示: zlib.lib(gzio.obj) : error LNK2019: 无法解析的外部符号 __imp__strerror ,该符号在函数 _gzerror 中被引用
- 关于在Page_Load定义外部变量输出
- C/C++中关于地址、指针和引用变量的学习笔记(十) : 引用型变量
- 关于Js变量地址引用的问题
- awk引用外部变量
- 关于引用外部JS文件,再次警告大家
- C/C++中关于地址、指针和引用变量的学习笔记(八) : 命令行参数
- C/C++中关于地址、指针和引用变量的学习笔记(七) : sizeof和typedef
- Android中关于颜色变量的引用
- 有关extern关键字/引用外部文件的变量问题
- 关于变量,对象,引用的存放。
- 关于JavaScript中变量的相互引用
- C/C++中关于地址、指针和引用变量的学习笔记(九) : 内存结构
- PHP中关于在函数内引用全局变量的问题
- awk 引用外部变量的六种方法
- C/C++中关于地址、指针和引用变量的学习笔记(二) : 数组
- (转帖)关于访问同类引用参数的私有变量的疑问
- 一道关于php变量引用的面试题
- 关于引用类型的成员变量