米国国防省の標準高等言語エイダ(Ada)を語れ!

■ このスレッドは過去ログ倉庫に格納されています
1名無しさんは伊達じゃない
垢版 |
NGNG
どうよ?
NGNG
今書いてみたヘボサンプルを貼ってみるテスト。
with Ada.Text_IO;
procedure Test is
 task type A_Task is
  entry Setup(Message: in String);
  entry Join;
 end A_Task;
 task body A_Task is
 begin
  Ada.Text_IO.Put_Line("* start!");
  accept Setup(Message: in String) do
   Ada.Text_IO.Put("* "); Ada.Text_IO.Put(Message); Ada.Text_IO.Put_Line("!");
  end Setup;
  loop
   select accept Join do Ada.Text_IO.Put_Line("* exit!"); end Join; abort A_Task;
   else Ada.Text_IO.Put("#"); delay 0.1;
   end select;
  end loop;
 end A_Task;
 type A_Access is access A_Task;
 A: A_Access;
begin
 Ada.Text_IO.Put_Line("go!"); A := new A_Task; A.Setup("setup");
 delay 1.0; A.Join; Ada.Text_IO.Put_Line("end!");
end Test;
NGNG
Win32で言えば、entryがCreateEventで、acceptがWaitForSingleObjectで、
selectがWaitForMultipleObjectsで、delayがSleepで、abortがExitThread…かな。
なおacceptの後にdoを続けた場合、そのブロックが終わるまで呼び出し元は待ってるようだ。
それとtask typeって形で型にしておけば、newするまで実行されない。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。