甲府方重信Blog

...Shigenobu Koufugatas Blog

  • Increase font size
  • Default font size
  • Decrease font size
Error
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
  • Unable to load Cache Storage: database
Home 業務日誌 Adaプログラミング Adaチュートリアル セクション13.2 - タスクの作成とコミュニケーション

Adaチュートリアル セクション13.2 - タスクの作成とコミュニケーション

E-mail Print PDF

セクション 13.2 - タスクの作成とコミュニケーション

簡単なタスクの例を見ることによって始めましょう。「Start」リクエストを待ち、回数の数値をテキスト行で表示して、最後に終了するタスクを作成することにしましょう。

私たちは、テキスト行をプリントする間にウェイトを入れることにします。それはプログラマーが何が起きているかを見るのに手助けとなるでしょう。より興味深くするために、私たちはStartリクエストに、プリントされるべきメッセージとプリントされる回数を含めることにします。

まず最初に、タスク型を作成します。タスク型は「Babbler」という名前にします。そして、私たちはBabbleというパッケージにそれを入れておきます。この宣言部は、次のようになります。


タスクを宣言する際に、プロシージャーの宣言に似た「entry」があります。entry文はタスクに対するリクエストが何であるかを宣言します。その中に、リクエストが起きたとき、タスクに対して送信される情報、タスクから送信される情報が含まれます。

パッケージとサブプログラムと同じように、タスクも宣言部と本体を持ちます。タスクの本体部は次のようになります。


タスクの本体部は、タスクが起動した時に何をするかを定義しています。この特定のタスクは、単純にいくつかのローカル変数をセットアップし、それから「accept」文を実行しているだけです。「accept」文は、対応する「entry」を通じて、何か他のタスクがリクエストを作成するのを待ちます。もう1つのタスクがマッチするリクエストを作成した際には、受け取るタスクは「do」と「end」の間のマッチするaccept文を実行します。タスクが「do」と「end」の間のaccept文を実行している時、それはほかのタスクとランデブーしている状態にあると言われます。リクエストしているタスクは、accpet文が実行されている「end」までいかなる命令も実行しません。ランデブー状態を終了した共通のタスクは、送信タスクによって送信されたデータをコピーし、受信したタスクがそれを後で利用することが出来ます。ひとたび、ランデブーが完了すると、どちらのタスクも実行可能となります。

ここでは、このタスク型をデモンストレーションするために短いプロシージャーを掲載します。私たちは、このプロシージャーをNoiseと呼びましょう。Noiseは、与えられたタスク型で2つのタスクを作成します。 そして、双方にStartメッセージを送信します。タスクは従来の型から変数を作成すると同じように作成できることを覚えておいてください。


プロシージャーNoiseのように、タスクインスタンスを宣言するプロシージャーは、マスターと呼ばれます。マスターは、自身のすべてのタスクが完了するまで、マスターは完了を待たなければなりません。そのため、NoiseはBabble_1とBabble2が終了するのを待って、終了することになります。

プロシージャーNoiseは、Babble_1とBabble2の「Start」entryを「呼び出し」ます。それがランデブーを実行します。

出典: http://www.adahome.com/Tutorials/Lovelace/s13s2.htm

Last Updated on Tuesday, 15 May 2012 17:03  

ニュース速報

一般向けのLinuxセキュリティー講座の3回目

 

1、Apache、メールサーバ、BINDなどのサービスのセキュリティ

2、SSHの詳細、SSLの仕組みなど

3、iptables

4、IDSの解説、tripwireの設置演習

5、rootkit対策

などの授業であった。

受講生は8名。

演習実施中に、来週のセキュリティーサーバー構築演習に必要なCentOS4.7のメディアを確認していたら、なんと、

4.7は、ネットからコンポーネントがなくなっていてネットワークインストールができなくなっていた。

急いで、CentOS 4.8のメディアを作成し、ネットワークインストールの環境を作ることに。

授業後、ネットワークインストールの確認をしていたら、帰宅が遅くなってしまった。ひやひや。