Multitarea en 4D es la posibilidad de ejecutar simultáneamente varias operaciones de bases de datos distintas. Estas operaciones son llamadas procesos.
Múltiples procesos equivalen a tener múltiples usuarios trabajando en el mismo ordenador, cada uno trabajando en su propia tarea. Esto significa principalmente que un método puede ser ejecutado como una tarea distinta de base de datos.
Esta sección trata los siguientes temas:
Crear y eliminar procesos
Elementos de un proceso
Procesos creados por 4D
Procesos locales y globales
Bloqueo de registros entre procesos
Nota: esta sección no cubre procesos almacenados. Ver la sección Procedimientos almacenados en el Manual de 4D Server.
Ejecute un método en el entorno Diseño después de seleccionar la casilla Ejecutar en un proceso nuevo en la caja de diálogo Ejecutar Método. El método elegido en la caja de diálogo Ejecutar método es el método proceso.
Los procesos pueden ejecutarse seleccionando los comandos de menú. En el editor de menús, marque la casilla Iniciar un nuevo proceso. El método asociado al comando de menú es el método proceso.
Utilice la función New process. El método pasado como parámetro a la función New process es el método proceso.
Utilice la función Execute on server para crear un procedimiento almacenado en el servidor. El método pasado como parámetro de la función es el método proceso.
Utilice el comando CALL WORKER. Si el proceso del worker no existe ya, se crea.
Se puede borrar un proceso bajo las siguientes condiciones. Las primeras dos condiciones son automáticas:
Cuando el método proceso termina su ejecución
Cuando el usuario sale de la base
Si detiene el proceso con el lenguaje o utilizando el botón Abortar en el Depurador
Si selecciona Abortar en el Explorador de ejecución
Si llama al comando KILL WORKER (eliminar un proceso worker únicamente).
Un proceso puede crear otro proceso. Los procesos no están organizados jerárquicamente, todos los procesos son iguales, y esto es independientemente del proceso a partir del cual ellos han sido creados. Una vez el proceso “padre” crea un proceso “hijo”, el proceso hijo continua sin importar si el proceso padre se está ejecutando o no.
Cada proceso contiene elementos específicos. Hay tres tipos de elementos diferentes en un proceso:
• Elementos de interfaz: los elementos necesarios para mostrar un proceso. • Elementos de datos: información relacionada con los datos de la base. • Elementos de lenguaje: elemento utilizados por el lenguaje o importantes para el desarrollo de su aplicación.
• Barra de menús: cada proceso puede tener su propia barra de menús actual. La barra de menús del proceso del primer plano es la barra de menús actual de la base. • Una o más ventanas: cada proceso puede tener varias ventanas abiertas simultáneamente. Por el contrario, algunos procesos no tienen ventanas. • Una ventana activa (primer plano): aunque un proceso puede tener varias ventanas abiertas simultáneamente, cada proceso tiene sólo una ventana activa. Para tener más de una ventana activa, debe iniciar más de un proceso.
Notas:
Por defecto, los procesos no incluyen barras de menús, lo que significa que los accesos directos estándar del menú Edición (en particular, cortar/copiar/pegar) no están disponibles en las ventanas de procesos. Cuando se llama a los diálogos o a los editores de 4D (editor de formularios, editor de búsquedas, Request, etc.) desde un proceso, si desea que el usuario pueda beneficiarse de atajos de teclado como copiar/pegar, debe asegurarse de que el equivalente a un menú Edición esté instalado en el proceso.
Los procesos apropiativos y los procesos que se ejecutan en el servidor (procedimientos almacenados) no deben contener elementos de interfaz.
Los elementos de datos se refieren a los datos de la base. Estos son los siguientes:
• Selección actual por tabla: cada proceso tiene su propia selección actual. La misma tabla puede tener diferentes selecciones actuales en diferentes procesos. • Registro actual por tabla: cada tabla puede tener un registro actual diferente en cada proceso.
Nota: esta descripción de elementos de datos es válida si los procesos son procesos globales. Por defecto, todos los procesos son globales. Consulte más adelante el párrafo que trata este tema.
Los elementos del lenguaje de un proceso son los elementos relacionados con la programación en 4D.
Variables: cada proceso tiene sus propias variables de proceso. Para mayor información ver DOM GET XML ATTRIBUTE BY NAME. Las variables proceso sólo se reconocen en el marco de su proceso nativo.
Tabla por defecto: cada proceso tiene su propia tabla por defecto. Sin embargo, note que el comando DEFAULT TABLE sólo es una convención para programación.
Formularios de entrada y salida: los formularios de entrada y salida por defecto pueden ser elegidos por programación para cada tabla en cada proceso.
Conjuntos de proceso: cada proceso tiene sus propios conjuntos de proceso. LockedSet es un conjunto de proceso. Los conjuntos proceso se borran tan pronto como el método de proceso termina.
On Error Call por proceso: cada proceso tiene su propio método de gestión de errores.
Ventana del depurador: cada proceso puede tener su propia ventana del Depurador.
Los procesos usuario son procesos que usted crea para efectuar ciertas tareas. Ellos comparten los tiempos de equipo con los procesos principales. Los procesos de conexión Web son los procesos usuario.
La aplicación 4D crea igualmente los procesos para sus propias necesidades. Estos son los principales procesos creados y administrados por 4D:
Proceso principal: el proceso principal administra las ventanas de visualización de la interfaz de usuario.
Proceso diseño: el proceso desarrollo administra las ventanas y editores del entorno de Desarrollo. No hay proceso desarrollo en una base compilada que no contenga el código interpretado.
Proceso servidor web: el proceso servidor web corre cuando la base se publica en la web. Para mayor información ver la sección .
Proceso de gestión de la cache: el proceso de gestión de cache administra las entradas/salidas disco de la base. Este proceso se crea tan pronto como 4D o 4D Server se ejecutan.
Proceso de indexación: el proceso de indexación administra los índices de los campos en una base como procesos por separado. Este proceso se crea cuando un índice es creado o borrado por un campo.
Proceso de gestión de eventos: este proceso se crea cuando un método de gestión de eventos es instalado por el comando ON EVENT CALL. Este proceso ejecuta el método de evento instalado por ON EVENT CALL cuando hay un evento. El método de evento es el método de proceso de este proceso. Este proceso se ejecuta continuamente, incluso si ningún método está en ejecución. La gestión de eventos funciona también en el entorno Diseño.
A partir de 4D v15 R5 64 bits, 4D le permite crear procesos usuario apropiativos en modo compilado. En versiones anteriores, sólo los procesos usuario cooperativos estaban disponibles.
Cuando se ejecuta en modo apropiativo, un proceso está dedicado a un CPU. La gestión de procesos a continuación, se delega al sistema, que puede asignar a cada CPU por separado en una máquina multi-núcleo. Cuando se ejecuta en modo cooperativo, todos los procesos son gestionados por el hilo de la aplicación padre y comparten la misma CPU, incluso en una máquina multi-núcleo.
Como resultado, en el modo apropiativo, el rendimiento general de la aplicación mejora, sobre todo en máquinas multi-núcleo, ya que múltiples procesos (hilos) pueden funcionar simultáneamente. Sin embargo, las ganancias reales dependen de las operaciones que se ejecuten. En contraparte, ya que cada hilo es independiente de los otros en el modo apropiativo, y no gestionado directamente por la aplicación, existen limitaciones específicas aplicadas a los métodos que se desea para ser compatibles con el uso apropiativo. Además, la ejecución preferente sólo está disponible en ciertos contextos específicos.
El alcance de los procesos puede ser local o global. Por defecto, todos los procesos son globales.
En la mayoría de los casos, usted utilizará procesos globales. Los procesos globales pueden efectuar toda operación, incluyendo acceso y manipulación de los datos.
Los procesos locales deben ser utilizados únicamente para operaciones que no acceden a los datos. Por ejemplo, puede utilizar un proceso local para controlar los elementos de interfaz como las paletas flotantes o ejecutar un método de gestión de eventos.
Atención: si intenta acceder a los datos desde un proceso local, accede a los datos por medio del proceso principal (proceso #1), y toma el riesgo de entrar en conflicto con las operaciones efectuadas en ese proceso.
4D Server El uso de procesos locales del lado del Cliente para operaciones que no requieran acceso a datos, reserva más tiempo de procesamiento para tareas que requieren el servidor intensivamente. Cuando crea un proceso local para el cliente (utilizando por ejemplo New process), solo existe del lado del cliente. Cuando crea un proceso global, se crea un proceso "doble" en el servidor, que consume recursos del servidor, para manejar el acceso a los datos y el contexto de la base de datos. Sin embargo, por razones de optimización, el proceso doble se crea solo si es necesario, es decir, la primera vez que el proceso global necesita acceder a los datos.
Un registro está bloqueado cuando otro proceso ha cargado el registro para modificarlo. Un registro bloqueado puede ser cargado por otro proceso, pero no puede ser modificado. El registro está bloqueado solamente en el proceso en el cual el registro está siendo modificado. Una tabla debe estar en modo lectura/escritura para que un registro se cargue desbloqueado. Para mayor información consulte la sección .