ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v19.8
New signal

New signal 


 

New signal {( description )} -> 戻り値 
引数   説明
description  テキスト in シグナルの詳細
戻り値  オブジェクト in シグナルを格納しているネイティブなオブジェクト

説明   

New signal コマンドはシグナル オブジェクトを作成します。

シグナルは、あるワーカーあるいはプロセスから他のプロセスへと引数のように渡せる共有オブジェクトです。そのため、以下のようなことが可能になります:

  • 呼び出されたワーカー/プロセスは特定の処理が完了した後にシグナルオブジェクトを更新することができます。
  • 呼び出しているワーカー/プロセスはCPU リソースを消費することなく、実行を停止してシグナルが更新されるまで待つことができます。

オプションとして、description 引数内に、シグナルの詳細を説明するカスタムのテキストを渡すことができます。テキストは、シグナルの作成後に定義することも可能です。

シグナルオブジェクトは共有オブジェクト(共有オブジェクトと共有コレクション参照)のため、Use...End use ストラクチャーを使用することで、signal.description プロパティも含め、ユーザー独自のプロパティを維持するのに使用することもできます。

返される値

返されたシグナル オブジェクトには、以下のプロパティとメソッドが格納されます:

プロパティ詳細
signal.signaledブール(読み込みのみのプロパティ)シグナル作成時はfalse で、signal.trigger( ) メソッドが呼ばれるとtrue になります。
signal.descriptionテキストシグナルのカスタムの詳細(あれば)

メソッド詳細
signal.wait( )シグナルを待つメソッド(呼び出しているプロセス/ワーカー)
signal.trigger( )シグナルをトリガーするメソッド(呼び出されたプロセス/ワーカー)

例題  

以下は、シグナルを設定するワーカーのよくある一例です:

 C_OBJECT($signal)
 $signal:=New signal("This is my first signal")
 CALL WORKER("myworker";"doSomething";$signal)
 $signaled:=$signal.wait(1) // 最大で1秒待つ
 If($signaled)
    ALERT("myworker finished the work. Result: "+$signal.myresult)
 Else
    ALERT("myworker has not finished in less than 1s")
 End if

以下は、"doSomething" メソッドの中身の一例です:

 C_OBJECT($1)
  // 何らかの処理
  //...
 Use($1)
    $1.myresult:=$processingResult  // 結果を返す
 End use
 $1.trigger() // 処理が完了した



参照 

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

 
プロパティ 

プロダクト: 4D
テーマ: プロセス (コミュニケーション)
番号: 1641

This command can be run in preemptive processes

 
ページの目次 
 
履歴 

初出: 4D v17 R4

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)