Minervqはタイマー処理をサポートします。...
移動
次へ 前へ
上へ 最上
詳細
timer_close/1
timer_create/2
timer_is_active/1
timer_start/2
timer_stop/1
参考
算術比較
算術式評価
アトム項処理
文書処理と正規表現
黒板
バイナリ入出力
文字入出力
制約処理
Compilation
節の生成と削除
節の検索と情報
グローバル変数
文法規則
リスト
論理と制御
全解
配布されたMinervaプロセス間の通信
ストリームの選択と制御
サーブレット
項の比較
項の生成と分解
項の入出力
項の単一化
項ベクター
項ストリーム
XML (eXtended Markup Language) 項へのサポート
非同期タイマー処理へのサポート
型検査
イフコンピュータ > MINERVA > マニュアル > レファレンス > 述語 > 非同期タイマー処理へのサポート

非同期タイマー処理へのサポート

Minervqはタイマー処理をサポートします。

タイマー処理をサポートする述語群があります。

  • timer_create/2
  • timer_close/2
  • timer_start/2
  • timer_stop/1
  • timer_is_active/1

タイマーを作り、消去し、開始させ、停止することができます。タイマーの 現状(進行中か停止中かのどちらか)をチェックすることができます。 タイマーに投げかけられるユーザ定義のコールバック述語を作ることができます。 タイマーが停止した時に、このコールバック述語が呼ばれます。 個々のタイマーは、スレッドとして実装されます。 それにより、タイマーのコールバックは非同期的に開始させることができます。 しかし、Minervaはマルチスレッドはサポートしていません。 (つまり、Minervaは同時に一つのゴールしか実行しません。) 一つのゴールの実行が終了したときに初めて、次のゴール(他のスレッドから 呼び出されたゴールである可能性もあります。)を実行させることが可能です。

それゆえに、タイマーサポートが必要な際は、プログラムは以下のような構成 にせねばなりません。

main(..) :-
    ...
    timer_create(mycallback(_,...), Timer),
    ...
    timer_start(Timer, T).

mycallback(Timer, ...) :- ...

プログラムを実行するときには、-daemonのフラグを付けて、Minervaを 呼び出さねばなりません。これによって、main/1述語が実行されている 最中に、その実行を停止することがありません。Minervaはすべてのスレッドが 停止したときに初めて、停止します。

main(_) :- ticker.

ticker :- set_global(ticker, 10), % create a timer, that should call tick/1 when running down timer_create(tick(_), Timer), % start the timer ... timer_start(Timer, 1000). % ... and (very important!!) ... stop the execution of main/1

tick(Timer) :- count_down(ticker, N), ( N > 0 -> % write 'tick' ... write(tick), nl, % .. and restart the timer ... timer_start(Timer, 1000) % ... and (very important!!) ... stop the execution of tick/1 % as the execution of the callback predicate will be pending % until the execution of tick/1 has been finished ; timer_close(Timer) ).

count_down(Counter, Value) :- get_global(Counter, OldValue), Value is OldValue - 1, set_global(Counter, Value).

続く..
timer_close/1
timer_create/2
タイマーをつくって、それにコールバック述語を連結します。...
timer_is_active/1
timer_start/2
timer_stop/1
MINERVA
ifcomputer logo
f
Expert Services on the Web
言語
English
Japanese
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/MINERVA/Manual/Reference/Predicates/timer/home_jp.html
published 2008/6/30 update 2002/3/20 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 ifcj@ifcomputer.co.jp
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
冒頭へ managed with ubiCMS