Delphi 类变量有全局存储还是线程本地存储?
-
09-06-2019 - |
题
我的猜测是,类变量(“class var”)在存储中确实是全局的(即整个应用程序的一个实例)。
但我想知道是否是这种情况,或者它们是否是存储中的线程(例如类似于“threadvar”)-每个线程一次实例。
有人知道吗?
编辑:将“范围”更改为“存储”,因为这实际上是正确的术语,也是我所追求的(感谢巴里)
解决方案
是的,类变量是全局范围的。查看 RTL 源代码,了解线程变量如何实现的详细信息。在 Win32 下,每个线程都可以在线程创建时自动分配一块内存。这个额外的数据区域用于包含您的线程变量。
其他提示
类变量的作用域根据其成员可见性属性确定,并且具有全局存储,而不是线程存储。
范围是一个语法概念,与哪些标识符在哪里可见有关。这里关心的是变量的存储。
类变量就像类一样:全局且对于应用程序来说是唯一的。
不隶属于 StackOverflow