2008-09-17 80 views
6

我的猜測是,類變量(「class var」)在存儲中是真正的全局(即整個應用程序的一個實例)。德爾福班vars有全局或線程本地存儲?

但我想知道是否是這種情況,或者他們是否存儲線程(例如類似於「threadvar」) - 每個線程一次實例。

有人知道嗎?

編輯:改變「範圍」爲「存儲」,因爲這實際上是在正確的術語,我什麼後(感謝巴里)

回答

7

是,類變量是全局範圍。查看RTL源代碼以獲取threadvars如何實現的詳細信息。在Win32下,每個線程都可以在創建線程時自動分配一塊內存。這個額外的數據區域是用來包含你的threadvars的。

+0

我毫不懷疑你是正確的。想知道系統應該如何工作,但這是一個需要權威性「是/否」答案的問題,我想知道在接受答案之前我應該​​考慮多少票是「權威性」的。怎麼辦,怎麼辦.....? – Graza 2008-09-17 11:42:57

+0

Daniel的答案是正確的,我投了票。我不知道是否可以通過將類var引用到線程var來使用一些小技巧?還沒有嘗試過 - 也不會去嘗試:) – 2008-09-17 11:48:07

9

類變量的範圍根據其成員可見性屬性,並且具有全局存儲,而不是線程存儲。

範圍是一個語法概念,並且涉及哪些標識符從哪裏可見。這是這裏所關心的變量的存儲。

1

類變量就像類:全局和應用程序的唯一。