Concurrent computing: Difference between revisions

From Rosetta Code
Content added Content deleted
(New page: {{task}} Using either native language concurrency syntax or freely available libraries write a program to display the strings "Enjoy" "Rosetta" "Code", one string per line, in random orde...)
 
No edit summary
Line 2: Line 2:


Using either native language concurrency syntax or freely available libraries write a program to display the strings "Enjoy" "Rosetta" "Code", one string per line, in random order. Concurrency syntax must use threads, tasks, co-routines, or whatever concurrency is called in your language.
Using either native language concurrency syntax or freely available libraries write a program to display the strings "Enjoy" "Rosetta" "Code", one string per line, in random order. Concurrency syntax must use threads, tasks, co-routines, or whatever concurrency is called in your language.


==[[Ada]]==
[[Category: Ada]]
with Ada.Text_Io; use Ada.Text_Io;
with Ada.Numerics.Float_Random; use Ada.Numerics.Float_Random;
with Ada.strings.Unbounded; use Ada.Strings.Unbounded;
procedure Concurrent_Hello is
task type Writer is
entry Start(Message : String);
end Writer;
task body Writer is
Seed : Generator;
Sleep_Time : Float;
Words : Unbounded_String;
begin
Reset(Seed);
Sleep_Time := Random(Seed);
accept Start(Message : String) do
Words := To_Unbounded_String(Message);
end Start;
delay Duration(Sleep_Time);
Put_Line(To_String(Words));
end Writer;
T1 : Writer;
T2 : Writer;
T3 : Writer;
begin
T1.Start("Enjoy");
T2.Start("Rosetta");
T3.Start("Code");
end Concurrent_Hello;

Revision as of 04:39, 6 February 2007

Task
Concurrent computing
You are encouraged to solve this task according to the task description, using any language you may know.

Using either native language concurrency syntax or freely available libraries write a program to display the strings "Enjoy" "Rosetta" "Code", one string per line, in random order. Concurrency syntax must use threads, tasks, co-routines, or whatever concurrency is called in your language.


Ada

with Ada.Text_Io; use Ada.Text_Io;
with Ada.Numerics.Float_Random; use Ada.Numerics.Float_Random;
with Ada.strings.Unbounded; use Ada.Strings.Unbounded;

procedure Concurrent_Hello is
   task type Writer is 
      entry Start(Message : String);
   end Writer;
   
   task body Writer is
      Seed : Generator;
      Sleep_Time : Float;
      Words : Unbounded_String;
   begin
      Reset(Seed);
      Sleep_Time := Random(Seed);
      accept Start(Message : String) do
         Words := To_Unbounded_String(Message);
      end Start;
      delay Duration(Sleep_Time);
      Put_Line(To_String(Words));
   end Writer;
   T1 : Writer;
   T2 : Writer;
   T3 : Writer;
begin
   T1.Start("Enjoy");
   T2.Start("Rosetta");
   T3.Start("Code");
end Concurrent_Hello;