- Criado por Marcos Zambon Amista, última alteração em 17 set, 2024
Consumo de Recursos e Licenças
A classe gerência a abertura de threads de forma dinâmica, ajustando-se conforme a demanda de utilização. Isso significa que o consumo de memória e processamento no AppServer será proporcional à quantidade de threads ativas no momento. Sendo assim o consumo de licenças também pode ser impactado.
Disponibilidade
Classe disponível para utilização na lib 20241007 ou superior.
Descrição:
A classe FWIPCWait coordena o processamento entre threads, criando instâncias automaticamente que se iniciam de acordo com a disponibilidade dos servidores.
New()
Descrição: Método construtor da classe. Sintaxe: New(cSemaphore, nTimeOut) - > Return Parâmetros:
|
SetThreads()
Descrição: Inicializa o número de threads para execução da fila. Sintaxe: SetThreads(nThreads)->Return Parâmetros:
|
SetEnvironment()
Descrição: Inicializa as variáveis para montagem do ambiente. Sintaxe: SetEnvironment( cEnvironment ) -> Return Nil Parâmetros:
Retorno: Não retorna valores explícitos. |
SetNoErrorStop()
Descrição: Especifica se o sistema deve parar em caso de erro. Sintaxe: SetNoErrorStop(lNoStop) - >Return INoStop Parâmetros:
Retorno: Retorna indica se o sistema para ou continua. |
AddThread()
Descrição: Adiciona threads para fazer a execução. Sintaxe: AddThread() - >Return |
RemoveThread()
Descrição: Remove threads de execução. Sintaxe: RemoveThread(lAll) - >Return Parâmetros:
|
Start()
Descrição: Inicializa a execução da fila. Sintaxe: Start(cFunction)→Return Parâmetros:
Retorno: Não possui retorno explícito. |
Stop()
Descrição: Para a execução das threads de IPC e a de monitoramento. Sintaxe: FWIpcWait():Stop() → lRetorno Retorno: lRetorno → Logica, Indica sucesso na parada as threads da FWIpcWait. |
HasThreadFree()
Descrição: Indica se há threads de processamento livres para execução. Sintaxe: HasThreadFree()->Return(lRetorno) Retorno: Retorna .T. se houver threads livres, caso contrário retorna .F. |
Go()
Descrição: Envia uma requisição para uma thread agent, onde será processado uma lista de até 10 parâmetro de acordo com a função informada no método Start. Sintaxe: Go( uParm1, uParm2, uParm3, uParm4, uParm5, uParm6, uParm7, uParm8, uParm9, uParm10 )->Return(lRetorno) Parâmetros:
Retorno: Retorna .T. se a requisição foi feita com sucesso, caso não foi retorna .F. |
GetError()
Descrição: Recupera o erro ocorrido em uma das threads de processamento Sintaxe: GetError()->Return(::cError) Retorno: Descreve o tipo de erro ocorrido ou vazio caso não houver. |
GetMonitorStatus()
Descrição: Recupera o status do Monitor Sintaxe: GetMonitorStatus()→Return(PadR(::oSemaphore:DirtyRead(::cMonitorID),THREAD_LENGHT_STATUS)) Retorno: Status atual em formato de sting. |
FreeThreads()
Descrição: Devolve a quantidade de threads de processamento livres para execução Sintaxe: FreeThreads()->Return(nRet) Retorno: Retorna a quantidade de threads livres |
StopProcessOnError()
Descrição: Especifica se o IPC deve ou não parar em caso de erro. Sintaxe: SetNoErrorStop(lNoStop)->Return lStop Parâmetros:
Retorno: Define o comportamento para continuar retorna .T. e para finalizar retorna .F. |
#INCLUDE "protheus.ch"
#INCLUDE "parmtype.ch"
#Include "fwipcwait.ch"
//---------------------------------------------------------------------
/*/{Protheus.doc} IPCTeste
Função para exemplo de uso da classe FWIPCWait
@author FRAMEWORK
@since 11/09/2024
@version 1.0
/*/
//---------------------------------------------------------------------
User Function IPCTeste()
Local oIPC as object
Local nX as numeric
RpcSetEnv("99","01")
oIPC := FWIPCWait():New("TESTE",10000)
oIPC:SetThreads(1)
oIPC:SetEnvironment(cEmpAnt,cFilAnt)
oIPC:Start("U_IPCTEST2")
For nX := 1 To 1000
oIPC:Go(nX)
Next nX
oIPC:Stop()
FreeObj(oIPC)
oIPC := Nil
Return
//---------------------------------------------------------------------
/*/{Protheus.doc} IPCTEST2
Função que será executada nas threads de exemplo da FWIpcWait
@author FRAMEWORK
@since 11/09/2024
@version 1.0
/*/
//---------------------------------------------------------------------
User Function IPCTEST2(nX as numeric)
ConOut("Entrei...", nX, Time())
Sleep(2000)
ConOut("Saindo...", nX, Time())
Return
- Métodos:
- Sem rótulos