|
|
|
|
ParallelTaskExecute (Función) Activa la ejecución de una tarea paralela.
// Use the syntax 1 t1 is ParallelTask = ParallelTaskExecute(ProcedureA, (), ptoMainThread)
// Use the syntax 2 t1 is ParallelTask t1.Procédure = Procedure3 t2 is ParallelTask = ParallelTaskExecute(t1) // Use the syntax 3 t3 is Description of ParallelTask t3.Procedure = Procedure3 ParallelTaskExecute(t3)
// Use the syntax 3 t3bis is Description of ParallelTask t3bis.Procedure = Procedure3bis t3bis.Parameter[1] = Today() t3bis.Parameter[2] = TimeSys() ParallelTaskExecute(t3bis)
// Declare several tasks and run a process at the end of all these tasks MyTaskDescription is Description of ParallelTask arrMyTasks is array of ParallelTask // Result of parallel tasks functions // Task #1 MyTaskDescription.Procedure = Example2_Step1 // Runs the parallel tasks // Add the task returned to an array of tasks // in order to re-use them in ParallelTaskExecuteAfterAll Add(arrMyTasks, ParallelTaskExecute(MyTaskDescription)) // Task #2 MyTaskDescription.Procedure = Example2_Step2 Add(arrMyTasks, ParallelTaskExecute(MyTaskDescription)) // Specify the procedure to run once // once all the tasks found in the arrMyTasks array are ended ParallelTaskExecuteAfterAll(arrMyTasks, Example2_End, (), ptoMainThread)
Sintaxis
Ejecutando una tarea paralela Ocultar los detalles
<Result> = ParallelTaskExecute(<Procedure> [, <Parameters> [, <Options>]])
<Result>: ParallelTask Variable ParallelTask Variable correspondiente a la tarea a ejecutar. <Procedure>: Cadena de caracteres o variable de tipo Procedure Procedimiento a ejecutar. Este parámetro puede corresponder a: - el nombre del procedimiento a ejecutar.
- el nombre de la variable de tipo Procedure que corresponde al procedimiento a ejecutar.
<Parameters>: Lista de valores entre paréntesis, separados por comas Parámetros del procedimiento a ejecutar. La lista de parámetros tiene el siguiente formato:(<Parameter 1>, ..., <Parameter N>) donde: - <Parameter 1>: Primer parámetro del procedimiento.
- ...
- <Parameter N>: Enésimo parámetro de procedimiento.
Atención: Los parámetros se pasan por valor. En el caso de las variables de tipos complejos (arrays, objeto), el valor es el propio elemento.. Para proteger el acceso a esta Variable, se puede utilizar una de las siguientes soluciones: - hacer una copia de la Variable (con la palabra clave LOCAL),
- utilizar secciones críticas (con la función WLanguage CriticalSectionStart( Función) o el atributo <sección crítica>)
<Options>: Constante o combinación de constantes de tipo Integer (opcional) Opciones de tarea a ejecutar: | | ptoDelayedCopyHFSQLContext (Valor predeterminado) | Activa un ligero copy del contexto HFSQL durante el primer acceso a los datos HFSQL . | ptoFullCopyHFSQLContext | Activa la copy inmediata del contexto HFSQL actual. Se recomienda, por ejemplo, si la tarea paralela debe tener en cuenta las posiciones actuales en los archivos y consultas del contexto de la persona que llama. | ptoLightCopyHFSQLContext | Activa la copy inmediata de una parte del contexto HFSQL actual. Solo se almacenan los directorios que contienen los archivos de datos en modo HFSQL Classic y/o las conexiones en modo HFSQL Client/Server. | ptoMainThread | Ejecuta la tarea en el principal Thread. Esta constante se puede combinar con una de las otras constantes.
Atención: Esta constante no puede ser usada para ejecutar una tarea paralela en la thread principal de la thread principal. |
Observación: Para saber qué tipo de copy elegir, consulte la página de comparison entre los diferentes modos de copy.
Ejecución de una tarea paralela descrita previamente (ParallelTask Variable) Ocultar los detalles
<Result> = ParallelTaskExecute(<Task>)
<Result>: ParallelTask Variable ParallelTask Variable correspondiente a la tarea ejecutada. <Task>: ParallelTask Variable Nombre de la ParallelTask Variable correspondiente a la tarea a ejecutar. Atención: Se produce un error de WLanguage si la tarea se está ejecutando actualmente o si la tarea ya estaba ejecutada.
Ejecución de una tarea paralela identificada por su descripción (Descripción de ParallelTask Variable) Ocultar los detalles
<Result> = ParallelTaskExecute(<Task description>)
<Result>: ParallelTask Variable ParallelTask Variable correspondiente a la tarea ejecutada. <Task description>: Descripción de ParallelTask Variable Nombre de la Descripción de ParallelTask Variable que describe la tarea a ejecutar. Observaciones - La tarea se guarda en la cola de tareas a ejecutar.
- ParallelTaskExecute no es una función de bloqueo y no espera a que se complete la tarea.
- comparison entre los diferentes tipos de copy para el contexto HFSQL:
| | | Tipo de copy | Beneficios | Inconvenientes |
---|
Copia completa | Copias: - los extensos parámetros de conexión (conexiones, caminos físicos, ...).
- las posiciones, los filtros, ... definido en los archivos de datos.
- las consultas.
| Consumo de memoria (en el cliente y en el servidor). | Luz copy | Copia los extensos parámetros de conexión (conexiones, caminos físicos, ...). No hay consumo de memoria en el servidor. | Los registros y los filtros actuales no se copian. Por lo tanto, los registros deben ser reposicionados por HReadSeek por ejemplo. No copy de consultas. El consumo de memoria en el ordenador del cliente | Copia diferida | No hay consumo de memoria (en el cliente y en el servidor). | Riesgo: Si se modifican los parámetros de conexión extendida, se tendrá en cuenta la última modificación. Los registros y los filtros actuales no se copian. Por lo tanto, los registros deben ser reposicionados por HReadSeek por ejemplo. No copy de consultas. |
En la mayoría de los casos, se recomienda el copy retrasado siempre que no cambie los parámetros de conexión y que realice las llamadas necesarias a HReadSeek.
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|