米国国防省の標準高等言語エイダ(Ada)を語れ!
■ このスレッドは過去ログ倉庫に格納されています
1名無しさんは伊達じゃない
NGNG どうよ?
421デフォルトの名無しさん
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;
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;
422デフォルトの名無しさん
NGNG Win32で言えば、entryがCreateEventで、acceptがWaitForSingleObjectで、
selectがWaitForMultipleObjectsで、delayがSleepで、abortがExitThread…かな。
なおacceptの後にdoを続けた場合、そのブロックが終わるまで呼び出し元は待ってるようだ。
それとtask typeって形で型にしておけば、newするまで実行されない。
selectがWaitForMultipleObjectsで、delayがSleepで、abortがExitThread…かな。
なおacceptの後にdoを続けた場合、そのブロックが終わるまで呼び出し元は待ってるようだ。
それとtask typeって形で型にしておけば、newするまで実行されない。
■ このスレッドは過去ログ倉庫に格納されています
