2008-09-17 5 views
6

Supongo que las variables de clase ("clase var") son verdaderamente globales en almacenamiento (es decir, una instancia para toda la aplicación).¿Los tipos de clase Delphi tienen almacenamiento global o de subprocesos locales?

Pero me pregunto si este es el caso, o si son hilos en el almacenamiento (por ejemplo, similar a un "threadvar") - una vez instancia por hilo.

¿Alguien sabe?

Editar: cambiar "alcance" a "almacenamiento", ya que es, de hecho, la terminología correcta, y lo que busco (gracias Barry)

Respuesta

7

Sí, las variables de clase están en el ámbito mundial. Eche un vistazo a la fuente RTL para obtener detalles sobre cómo se implementan los threadvars. En Win32, cada subproceso puede tener un bloque de memoria asignado automáticamente en la creación de subprocesos. Esta área de datos adicional es lo que se usa para contener sus hilos de ejecución.

+0

No tengo dudas de que estás en lo correcto. Sin embargo, me pregunto cómo debería funcionar el sistema ... esta es una pregunta que requiere una respuesta autorizada de "sí/no" y me pregunto cuántos votos debería considerar como "autorizados" antes de "aceptar" la respuesta. Que hacer que hacer.....? – Graza

+0

La respuesta de Daniel es correcta y la voté. Me pregunto si puedes usar un pequeño truco refiriendo la clase var a un hilo var? No he intentado - y tampoco intentaré :) –

+0

@Lars - Sospecho que bastaría con referir un campo de clase * standard *, en lugar de una "clase var" al threadvar. Si la vida de un objeto/variable está fuera de una instancia del objeto de referencia, y se necesita un threadvar, esta vida útil ya está provista, por lo que no es necesario realizar más trucos. – Graza

9

Las variables de clase tienen un ámbito de acuerdo con sus atributos de visibilidad de miembro, y tienen almacenamiento global, no almacenamiento de subprocesos.

El alcance es un concepto sintáctico y se relaciona con los identificadores visibles desde donde. Es el almacenamiento de la variable lo que preocupa aquí.

+0

Buen punto - Tenía la sensación de que mi semántica no era del todo correcta ... – Graza

1

Las variables de clase son como las clases: globales y únicas para la aplicación.

Cuestiones relacionadas