Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v20.6
New signal

New signal 


 

New signal {( descrição )} -> Resultado 
Parâmetro Tipo   Descrição
descrição  Texto in Descrição para o sinal
Resultado  Objeto in Objeto nativo encapsulando o sinal

O comando New signal cria um objeto sinal.

Um sinal é um objeto compartilhado que pode ser passado como parâmetro de um worker ou processo a outro, de modo que:

  • o worker/processo chamado pode atualizar o objeto sinal depois de que se complete um procesamento específico
  • o worker/processo chamante pode deter sua execução e esperar até que o sinal se atualize, sem consumir nenhum recurso de CPU.

Opcionalmente, pode passar no parâmetro descrição um texto personalizado que descreve o sinal. Este texto também pode ser definido depois da criação do sinal.

Como o objeto sinal é um objeto compartido (ver Objetos compartidos e Coleções compartidas), també pode ser utilizado para manter as propriedades de usuário, incluída a propriedade [#title id="9602"/], chamando a estrutura Use...End use.

Valor devolvido

O objeto sinal contém as propriedades abaixo:

PropriedadeTipoDescrição
signal.signaledBooleano(propriedade de apenas leitura) false na criação da sinal. Se converte em true quando se chama o método signal.trigger( ).
signal.descriptionTextoDescrição personalizada da sinal, se houver

MétodoDescrição
signal.wait( )Espera pelo sinal (processo/worker chamante)
signal.trigger( )Disparar o sinal (processo/worker chamado)

Exemplo  

Este é um exemplo típico de un worker que define um sinal:

 C_OBJECT($signal)
 $signal:=New signal("Este é meu primeiro sinal")
 CALL WORKER("myworker";"doSomething";$signal)
 $signaled:=$signal.wait(1) //espera um máximo de 1 segundo
 If($signaled)
    ALERT("myworker finished the work. Result: "+$signal.myresult)
 Else
    ALERT("myworker has not finished in less than 1s")
 End if

O método "doSomething" poderia ser como:

 C_OBJECT($1)
  //todo procesamento
  //...
 Use($1)
    $1.myresult:=$processingResult  //devolve o resultado
 End use
 $1.trigger() // O trabalho está terminado



Ver também 

signal.wait( )
signal.description
signal.signaled
signal.trigger( )

 
PROPRIEDADES 

Produto: 4D
Tema: Processos (Comunicações)
Número 1641

This command can be run in preemptive processes

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Criado por: 4D v17 R4

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v20)
Manual de linguagem 4D ( 4D v20.1)
Manual de linguagem 4D ( 4D v20.2)
Manual de linguagem 4D ( 4D v20.3)
Manual de linguagem 4D ( 4D v20.4)
Manual de linguagem 4D ( 4D v20.5)
Manual de linguagem 4D ( 4D v20.6)