Función multithreading

La facilidad multithreading de PL/I permite la ejecución de partes de un programa PL/I de forma asíncrona en múltiples hilos.

Un programa PL/I es un conjunto de uno o varios procedimientos. El programa se ejecuta normalmente como una única unidad de ejecución, o como parte de una única unidad de ejecución. Cuando un procedimiento invoca a otro procedimiento, el control se pasa al procedimiento invocado, y la ejecución del procedimiento invocador se suspende hasta que el procedimiento invocado devuelva el control. Esta ejecución con un único flujo de control es el flujo síncrono.

Cuando se utiliza la función multithreading de PL/I, el procedimiento invocador no cede el control al procedimiento invocado. En su lugar, se establece un flujo de control adicional para que ambos procedimientos se ejecuten de forma concurrente. La ejecución de tales procedimientos concurrentes se denomina flujo asíncrono.

Con la función multithreading de PL/I, partes de un programa PL/I pueden ejecutarse de forma asíncrona en varios hilos. Un hilo es una unidad de trabajo que compite por los recursos del sistema informático. Un hilo no es el equivalente de una tarea en OS PL/I. Excepto en el caso del hilo principal de un programa, un hilo siempre es independiente y no está relacionado con otros hilos del programa. Cuando un procedimiento invoca a otro procedimiento como un hilo, esta acción se conoce como adjuntar o crear el hilo.

La ejecución de uno o más hilos se produce en un proceso, que puede considerarse como un programa PL/I. PL/I no proporciona las capacidades para crear y gestionar múltiples procesos o tareas, pero sí permite la creación y gestión de múltiples hilos en un único programa (proceso).

Normalmente hay un hilo de aplicación por proceso. Se pueden adjuntar (crear) varios hilos para estos fines:

  • Realizar un trabajo en menos tiempo. Estas aplicaciones pueden ser aplicaciones por lotes que no interactúan con el usuario. Por ejemplo, un procedimiento podría adjuntar un hilo que compilara un programa PL/I.
  • Realice las partes de alta respuesta de un programa en un hilo y las partes de E/S en otro hilo, y las partes de respuesta típica en un tercero.
  • Utilizar los recursos del sistema informático que puedan estar ociosos. Estos recursos pueden incluir dispositivos de E/S, así como las CPU.
  • Implemente aplicaciones multiusuario en tiempo real en las que el tiempo de respuesta sea crítico.
  • Aislar los trabajos independientes para garantizar la fiabilidad. Es decir, el fallo de una parte de un trabajo puede aislarse mientras se procesan otras partes independientes.
Nota: Los servicios del sistema operativo no deben utilizarse directamente cuando PL/I proporcione la función adecuada.