Thread

Hereda: RefCounted < Object

Una unidad de ejecución en un proceso.

Descripción

Una unidad de ejecución en un proceso. Puede ejecutar métodos en Objects simultáneamente. Se aconseja el uso de la sincronización a través de Mutex o Semaphore si se trabaja con objetos compartidos.

Advertencia:

Para asegurar una limpieza adecuada sin bloqueos o fallos, cuando el contador de referencia de un Thread llega a cero y por lo tanto se destruye, se deben cumplir las siguientes condiciones:

Tutoriales

Métodos

String

get_id() const

bool

is_alive() const

bool

is_started() const

void

set_thread_safety_checks_enabled(enabled: bool) static

Error

start(callable: Callable, priority: Priority = 1)

Variant

wait_to_finish()


Enumeraciones

enum Priority: 🔗

Priority PRIORITY_LOW = 0

Un hilo que corre con menor prioridad de lo normal.

Priority PRIORITY_NORMAL = 1

Un hilo con una prioridad estándar.

Priority PRIORITY_HIGH = 2

Un hilo que corre con mayor prioridad de lo normal.


Descripciones de Métodos

String get_id() const 🔗

Devuelve el ID del Thread actual, identificándolo de forma única entre todos los hilos. Si el Thread no ha comenzado a ejecutarse o si se ha llamado a wait_to_finish(), esto devuelve una string vacía.


bool is_alive() const 🔗

Devuelve true si este Thread está ejecutando actualmente la función proporcionada. Esto es útil para determinar si se puede llamar a wait_to_finish() sin bloquear el hilo que llama.

Para comprobar si un Thread se puede unir, utiliza is_started().


bool is_started() const 🔗

Devuelve true si este Thread ha sido iniciado. Una vez iniciado, esto devolverá true hasta que se una usando wait_to_finish(). Para comprobar si un Thread todavía está ejecutando su tarea, utiliza is_alive().


void set_thread_safety_checks_enabled(enabled: bool) static 🔗

Indica si las comprobaciones de seguridad de hilos que el motor realiza normalmente en los métodos de ciertas clases (por ejemplo, Node) deben realizarse en el hilo actual.

El valor por defecto, para cada hilo, es que estén habilitadas (como si se llamara con enabled siendo true).

Estas comprobaciones son conservadoras. Esto significa que sólo tendrán éxito en considerar una llamada segura para hilos (y por lo tanto permitir que se produzca) si el motor puede garantizar dicha seguridad.

Debido a esto, puede haber casos en los que el usuario quiera desactivarlas (siendo enabled false) para que ciertas operaciones vuelvan a estar permitidas. Al hacerlo, el usuario se hace responsable de garantizar la seguridad de los hilos (por ejemplo, mediante Mutex) para aquellos objetos que, de otro modo, están protegidos por el motor.

Nota: Este es un uso avanzado del motor. Se aconseja utilizarlo sólo si sabes lo que estás haciendo y no hay una forma más segura.

Nota: Esto es útil para los scripts que se ejecutan en objetos Thread arbitrarios o en tareas enviadas al WorkerThreadPool. No se aplica al código que se ejecuta durante el procesamiento de grupos Node, donde las comprobaciones siempre se realizan.

Nota: Incluso en el caso de haber desactivado las comprobaciones en una tarea WorkerThreadPool, no es necesario volver a activarlas al final. El motor lo hará.


Error start(callable: Callable, priority: Priority = 1) 🔗

Inicia un nuevo Thread que llama a callable.

Si el método acepta argumentos, se pueden pasar mediante Callable.bind().

La priority del Thread se puede modificar pasando un valor de la enumeración Priority.

Devuelve @GlobalScope.OK en caso de éxito o @GlobalScope.ERR_CANT_CREATE en caso de error.


Variant wait_to_finish() 🔗

Une el Thread y espera a que termine. Devuelve la salida del Callable pasado a start().

Debe utilizarse cuando se desea recuperar el valor devuelto por el método llamado por el Thread o antes de liberar la instancia que contiene el Thread.

Para determinar si esto se puede llamar sin bloquear el hilo de llamada, comprueba si is_alive() es false.