HB_threadStart( <@sStart()>|<bStart>|<cStart> [, <params, ...>] ) -> <pThID>

Inicia un nuevo hilo. Retorna un puntero al hilo recien creado

Ejemplos:

// usando puntero a la funcion (puede ser publica o estatica) 
hb_ThreadStart( @funcion() ) 

usando el nombre de la funcion (debe ser publica) hb_ThreadStart( “funcion” ) usando parametros

hb_ThreadStart( "function", 1, 2 3 )

usando un codeblock hb_ThreadStart( {|| funcion() } ) ===== hb_threadSelf() → <pThID>|NIL ===== Retorna el puntero al hilo de ejecución actual. NIL si es llamado desde el hilo principal de la aplicación. ===== hb_threadId( [<pThID>] ) → <nThNo> ===== Retorna el identificador del hilo (número) de ejecución actual. ===== hb_threadJoin( <pThID> [, @<xRetCode>] ) → <lOK> ===== Espera a que termine un hilo de ejecución y en la salida el segundo parámetro que es pasado por referencia recoge el valor de retorno Del hilo. ===== hb_threadDetach( <pThID> ) → <lOK> ===== Indica que los recursos que utiliza el sistema para dicho hilo deben de ser liberados cuando el hilo termine. No provoca la terminación del hilo, pero una vez utilizada está función no puede utilizarse hb_threadJoin(). ===== hb_threadQuitRequest( <pThID> ) → <lOK> ===== Intenta matar un hilo de ejecución. <note>Es muy recomandable que sea el programador el que establezca mecanismos para terminar los hilos de forma limpia.</note> ===== hb_threadTerminateAll() → NIL ===== Manda un mensaje de QUIT a todos los hilos en ejecución y espera a que terminen. Sólo debe de llamarse desde la aplicación principal. ===== hb_threadWaitForAll() → NIL ===== Espera a que terminen todos los hilos de ejecución. Sólo debe de llamarse desde la aplicación principal. ===== hb_threadWait( <pThID>|<apThID>, [<nTimeOut>] ) ⇒ <nThInd>|<nThCount>|0 ===== Espera a que terminen los hilos de ejecución indicados (puede ser una matriz de hilos). El segundo parámetro indica el máximo tiempo a esperar a que terminen en segundos (se pueden usar decimales). Un valor -1 indica que espera indefinidamente. Retorna el primer hilo terminado, el número total de hilos terminados o el valor cero si no se cerró ninguno. ===== hb_mutexCreate() → <pMtx> ===== Permite crear una entidad Mutex. El Valtype() de una variable que contiene un Mutex es puntero. Un Mutex sirve para varias cosas, pero el uso más común es como semáforo aunque también se puede utilizar para suscripción a mensajes. ===== hb_mutexLock( <pMtx> [, <nTimeOut>] ) → <lLocked> ===== Marca el Mutex como bloqueado por el thread que llamó a la función. Esta función retorna solamente cuando obtuvo el bloqueo del Mutex. Mientras un hilo bloquee un Mutex y cualquier otro hilo que intente bloquear el mismo Mutex, quedará bloqueado y en estado de espera a que se desbloquee el Mutex. Cuando el Mutex esté disponible, sólo uno de los hilos obtendrá acceso al Mutex, mientras que los demás seguirán esperando. El segundo parámetro indica el máximo tiempo a esperar a que terminen en segundos (se pueden usar decimales). Un valor -1 o no indicar segundo parámetro significa que espera indefinidamente. ===== hb_mutexUnlock( <pMtx> ) → <lOK> ===== Desbloquea el Mutex y lo deja disponible para que otro hilo lo pueda bloquear. ===== hb_mutexNotify( <pMtx> [, <xVal>] ) → NIL ===== Emite una notificación. Si hay uno o más threads esperando (suscritos), alguno de ellos es notificado y sale del estado de espera. Los demás threads suscriptos siguen esperando. No hay relación entre el orden de suscripción y el orden de notificación. Si no hubiera threads en espera, la suscripción queda pendiente en una cola y se van asignando por orden a los threads que se vayan suscribiendo. Es posible enviar información al thread que espera la suscripción, usando el segundo parámetro de la función. ===== hb_mutexNotifyAll( <pMtx> [, <xVal>] ) → NIL ===== Emite una notificación a todos los threads que esten en espera. Si no hay threads en espera es como si nunca se hubiera ejecutado la función, no se agregan ni quitan notificaciones que esten en cola. Es posible enviar información al thread que espera la suscripción, usando el segundo parámetro de la función. ===== hb_mutexSubscribe( <pMtx>, [<nTimeOut>] [, @<xSubscribed>] ) → <lSubscribed> ===== Inscribe al thread para ser avisado de una notificación. Si hay notificaciones pendientes, sale inmediatamente, si no, queda bloqueado a la espera de una notificación. Se puede indicar un tiempo de espera (segundos), luego del cual se desbloqueará a pesar de no recibir ninguna notificación. El thread que notifica, puede enviar una información en el momento de notificar la cual será recibida como tercer parámetro de la función de suscripción. Retorna un valor lógico verdadero si ocurrió la notificación y falso en caso de finalizar por timeout. ===== hb_mutexSubscribeNow( <pMtx>, [<nTimeOut>] [, @<xSubscribed>] ) → <lSubscribed> ===== El funcionamiento es similar a la función Subscribe(), la única diferencia es que antes de comenzar, borra cualquier notificación pendiente.