Есть ли в классе Delphi переменные глобального или потокового локального хранилища? - PullRequest
7 голосов
/ 17 сентября 2008

Я предполагаю, что переменные класса ("class var") действительно глобальны в хранилище (то есть один экземпляр для всего приложения).

Но мне интересно, так ли это, или они являются потоком в хранилище (например, похожим на "threadvar") - один раз для каждого потока.

Кто-нибудь знает?

Редактировать: изменил "видимость" на "хранилище", так как это на самом деле правильная терминология, и что мне нужно (спасибо Барри)

Ответы [ 3 ]

10 голосов
/ 17 сентября 2008

Переменные класса имеют область видимости в соответствии с их атрибутами видимости членов и имеют глобальное хранилище, а не хранилище потоков.

Область действия - это синтаксическая концепция, которая относится к тому, какие идентификаторы видны откуда. Здесь хранится переменная.

8 голосов
/ 17 сентября 2008

Да, переменные класса имеют глобальную область видимости. Посмотрите в источнике RTL подробности о том, как реализованы потоки. Под Win32 каждый поток может иметь блок памяти, выделенный ему автоматически при создании потока. Эта дополнительная область данных используется для хранения ваших потоков.

1 голос
/ 18 сентября 2008

Переменные класса похожи на классы: глобальные и уникальные для приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...