メインコンテンツまでスキップ
バージョン: 20 R7 BETA

New signal

New signal { ( description : Text ) } : 4D.Signal

引数説明
descriptionテキストシグナルの詳細
戻り値4D.Signalシグナルを格納するネイティブオブジェクト
履歴
リリース内容
17 R4追加

説明

New signal コマンドは、4D.Signal オブジェクトを作成します。

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

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

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

Signal オブジェクトは共有オブジェクトのため、Use...End use 構文を使用することで、.description プロパティのほか、ユーザー独自のプロパティを管理するのに使用することもできます。

戻り値

新規の 4D.Signal オブジェクト

例題

以下は、シグナルを設定するワーカーの典型的な例です:

 var $signal : 4D.Signal
$signal:=New signal("This is my first signal")

CALL WORKER("myworker";"doSomething";$signal)
$signaled:=$signal.wait(1) // 最大で 1秒待機します

If($signaled)
ALERT("myworker はタスクを終了しました。 結果: "+$signal.myresult)
Else
ALERT("myworker は 1秒以内にタスクを終了できませんでした。")
End if

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

 #DECLARE ($signal : 4D.Signal)
// 何らかの処理
//...
Use($signal)
$signal.myresult:=$processingResult // 結果を返します
End use
$signal.trigger() // 処理が完了しました