Descrição
SmartJob [AS] - Executa uma rotina em uma nova thread sem interface. Consiste em inserir o Job em uma fila e somente libera a execução caso existam recursos de CPU e memória confortáveis para executar essa nova thread, diferentemente do StartJob. .
|
Sintaxe
| SmartJob( <cFuncao>, <cEnv>, <lWait>, <xParans> ) |
INI
[SMARTJOB]
memload=75
minjobs=2
maxjobs=10
Quando não configurados, os valores default são, respectivamente, 60, 2 e 16.
Parâmetros
| Par |
Nome |
Tipo |
Descrição |
Default |
Obg |
Ref |
01
|
cFuncao |
Caracter |
Indica o nome do Job que será executado |
|
X |
|
| 02 |
cEnv |
Caracter |
Indica o nome do ambiente em que o Job será executado |
|
X |
|
| 03 |
lWait |
Boolean |
Indica se, verdadeiro (.T.), o processo será finalizado; caso contrário, falso (.F.). |
|
X |
|
| 04 |
xParans |
Indefinido |
Os parâmetros (máximo 25 parâmetros) informados a partir deste ponto serão repassados para a função especificada no parâmetro cName. Caso informados parâmetros do tipo B (Code-Block) ou O (Object), no processo de destino receberá NIL |
|
|
|
Retorno
| Retorno |
Tipo |
Descrição |
| lRet |
Boolean
|
Se lWait for verdadeiro (.T.) o retorno do StartJob será o retorno da função a ser executada como um JOB (cName), caso lWait seja falso (.F.) o retorno é nulo (NIL).
|
Exemplo
#INCLUDE "TOTVS.CH"
User Function StartJ()
SmartJob("U_JOB", GetEnvServer(), .F., 'UniversoADVPL', 'ADVPL' )
Return( Nil )
User Function JOB( cMen1, cMen2 )
Conout( cMen1 + ' - ' + cMen2, 'UniversoADVPL' )
Return( Nil )
Resultado
Informações adicionais
|
A fila de SmartJobs não emprega prioridades, ou seja, é um autêntico FIFO (Firt in - First Out);
Quando inserido na fila, um SmartJob permanece nela até ganhar a oportunidade de ser executado;
Internamente, quando a fila cresce muito ou está com baixa vazão, o motor de execução pode criar algumas threads a mais do que a configuração máxima, a fim de suprir a demanda;
No momento em que a execução de SmartJobs retorna à condições propícias e tendo o motor criado threads extras, ele mesmo se encarrega de voltar aos valores originais de configuração;
Estando a fila de jobs vazia, para economizar recursos, o motor de execução pode ficar sem threads ativas (stand by), só as reativando se houver demanda.
|
Gostou? Compartilhe com seus amigos e deixe um comentário! 😎