Ajude o site desativando o bloqueador de anúncio

ASSINE A NEWSLETTER

Cadastrando...
PIX uDesenv pix deposito

SmartJob [AS]

Autor: Eurai Criado: 30/03/2025 Atualizado: 30/03/2025

Descrição

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
startjob_-_resultado_01  

 

 

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! 😎