Concurrent computing: Difference between revisions
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](http://static.miraheze.org/rosettacodewiki/thumb/b/ba/Rcode-button-task-crushed.png/64px-Rcode-button-task-crushed.png)
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;