Compartir a través de


Escalabilidad y subprocesamiento múltiple

Cuando un componente tiene un subproceso de ejecución, se puede ejecutar el código fuente de un solo objeto a la vez. La característica de automatización del Modelo de objetos componentes (Component Object Model, COM) controla esta situación mediante la serialización de las peticiones. Es decir, las peticiones se sitúan en una cola y se procesan una por una hasta terminar todas.

En un entorno operativo de subprocesamiento múltiple, la serialización evita que los objetos de un solo subproceso se superpongan a las peticiones de clientes: es decir, que se ejecute el código de una propiedad o método mientras se esté ejecutando una o varias peticiones de clientes. La superposición de las peticiones puede causar errores internos de datos si los objetos no están diseñados para reentrada.

Por lo tanto, la serialización es una característica muy importante de la automatización. No obstante, la serialización de componentes de un solo subproceso implica que, algunas veces, las peticiones se bloquean. Por ejemplo, supongamos que está utilizando un objeto Widget que tiene dos métodos, Spin y Flip.

  • Para completarse, el método Spin necesita desde varios segundos hasta media hora.
  • El método Flip es casi instantáneo.

Debido a que las aplicaciones de 32 bits son multitarea, una segunda aplicación podría llamar al método Flip mientras el método Spin ya se está ejecutando. El método corto Flip se bloquea hasta que el método largo Spin termine.

Cuando las operaciones largas bloquean otras cortas, la productividad disminuye y la frustración del usuario aumenta. Los componentes que se comportan de esta manera se denominan poco escalables. Es decir, no funcionan bien si se realizan muchas peticiones de diferente duración.

Visual FoxPro dispone de dos componentes para mejorar la escalabilidad y evitar el bloqueo de las llamadas: la creación de instancias de SingleUse y los objetos de varios subprocesos. Para obtener detalles, vea Controlar el bloqueo de llamadas.

Vea también

Enlace en tiempo de compilación (vtable) y en tiempo de ejecución (IDispatch) | Bibliotecas de tiempo de ejecución de Visual FoxPro | Interoperabilidad e Internet | Compilar código fuente