Ada95のスレッドとセマフォ
-
20-09-2019 - |
質問
どのように私はAda95でスレッドを使用することができますか?どのような機能私はそれらを作成、破棄、停止および開始するために使用することができますか?
どのように私は、この言語でセマフォを使用することができますか?
解決
スレッドのエイダの用語は、「タスク」です。エイダは、言語に直接組み込まれ(など)セマフォはありませんが、「エイダセマフォ」のようなもののためにグーグルでヒットのかなりの数を上げる必要があります。 AdaPower.com に、特に、ほとんど、同時エイダでのプログラミング(と、そのことについてはおよそかなり持っていますエイダでのプログラミングのすべての種類)。
他のヒント
並行性は、言語に組み込まれています。これは、C / Javaのような他の言語に比べエイダでマルチスレッドアプリケーションをプログラミング(なりやすいと少ないエラー)はるかに簡単になります。
エイダにセマフォを使用することをお勧めしません、保護されたオブジェクトは、はるかに強力である(ただし、必要な場合には、保護されたオブジェクトを使用して簡単にセマフォを構築することができます)。
いくつかの小さな構文例。タスク(および保護されたオブジェクト)は、静的なことができます...
task My_Task;
task body My_Task is
begin
-- Just print this to stdout and exit thread
Ada.Text_IO.Put_Line("Hello, concurrent World!");
end;
...または動的に作成した
task type My_Task_Type(N : Natural);
task body My_Task_Type(N : Natural) is ...
...
T1 := new My_Task_Type(100);
abort T1;
はるかに少ない冗長な他の言語(よりmaintenable)よりも! Ada.Synchronous_Task_Controlのような動的なタスクだけでなく、他の専門のパッケージを管理するためのキーワードを「中止」「新」を参照してください、と。
セマフォは通常、2つのファイル(拡張子は.adbファイルや.ads)を使用して、(むしろ、カスタムメイド)「構築」する必要があり、洗練されたセマフォは、アラン・バーンズエイダで同時かつリアルタイムプログラミング」を参照してください(3つのファイルが必要な場合がありますそしてアンディー・ウェリングス)。エイダにはスレッドではなく、タスクはありません。
セマフォを使用してエイダでの同期のために、あなたは私のBlogSpotの記事を見ることができます! http://3chevrons.blogspot.com/2010/02/semaphores-中-ada.htmlする
私はあなたがPythonでCおよび/またはスレッドで並行処理にエイダを関連付けるためにしようとしている感触を得ます。しかし、エイダは多少異なるアピールします。