Generar objetos en la memoria compartida

Tenemos que tener en cuenta los siguientes puntos importantes sobre los objetos compartidos:

  • Grabación en la memoria intermedia de todos los programas de datos que se leen con frecuencia, pero raramente se escriben.
  • Los accesos de lectura concurrentes son admitidos por los objetos compartidos.
  • El acceso es controlado por un mecanismo de bloqueo.
  • Los datos se graban como atributos de objetos.
  • Los cuellos de botella de memoria derivan en errores en tiempo de ejecución y debemos identificarlos.

Los accesos de escritura no deben ser frecuentes debido a que la escritura de datos en el área de objetos compartidos consume mucho rendimiento. En concreto, deseamos optimizar el tiempo de ejecución, lo cual no sería posible en caso de que el acceso de lectura se realizara con mayor frecuencia.
Un requisito previo para grabar un objeto en la memoria compartida es que debemos definir la clase del objeto con el suplemento SHARED MEMORY ENABLED de la sentencia CLASS. Además, podemos seleccionar el atributo SHARED MEMORY ENABLED en el CLASS BUILDER.
Generación de objetos en la memoria compartida
Una vez creada la instancia de área, podemos crear los objetos en la memoria de objetos compartida. Para ello, utilizamos el suplemento AREA HANDLE para la sentencia CREATE OBJECT. Esta sentencia nos informa al sistema sobre la instancia de área donde debería crear los objetos.
Generación de objetos en la memoria compartida II
Otra opción es crear una instancia del objeto raíz desde el programa.
Podemos crear los demás objetos en esta instancia de área a partir del constructor de la raíz sin asignar referencias, como en este caso.
gr_root->go_cat = gr_catalogo.
Para entenderlo mejor, como en los otros artículos, vamos a ver un ejemplo práctico.
En un programa ejecutable generamos en la memoria compartida un objeto de la clase ZCL_CESTA_COMPRAS_LOGALI utilizando el área ZCL_CESTA_COMP_AREA_LOGALI.

  1. La solución en código fuente es la siguiente:
  2. Utilizando el Monitor de la transacción SHMA podemos visualizar el objeto en la memoria compartida.Continuamos con doble clic sobre el nombre del área.Seleccionamos $DEFAULT_INSTANCE$ y la opción Leer versión activa.  Continuamos con doble clic sobre el nombre del área.
    Seleccionamos $DEFAULT_INSTANCE$ y la opción Leer versión activa.
  3. Para salir del modo Visualización objeto raíz tenemos que utilizar la opción Finalizar (Shift + F3) y F8 para finalizar el modo debugg.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *