Erlang (programming language)/Tutorials/Tree Hello: Difference between revisions
imported>Eric Evers (New page: =Hello in Parallel= ==Parallel Hello World== <pre> -module(tree_hello). % 1 -export([start/0, speak/1]). ...) |
imported>Chris Day No edit summary |
||
Line 1: | Line 1: | ||
{{subpages}} | |||
=Hello in Parallel= | =Hello in Parallel= | ||
Revision as of 12:28, 22 April 2008
The metadata subpage is missing. You can start it via filling in this form or by following the instructions that come up after clicking on the [show] link to the right. | |||
---|---|---|---|
|
Hello in Parallel
Parallel Hello World
-module(tree_hello). % 1 -export([start/0, speak/1]). % 2 % 3 start() -> % 4 Pid1 = spawn( tree_hello, speak,[ 1 ]), % 5 Pid2 = spawn( tree_hello, speak,[ 2 ]), % 6 Pid1 ! {hello, world}, % 7 Pid2 ! {hello, world}, % 8 done. % 9 % 10 speak(N) -> % 11 receive % 12 {hello, world} -> % 13 io:format("Hello, world! ~w \n", [N]) % 14 end. % 15 ========================================================================== output -------------------- tree_hello:start(). hello world! 1 hello world! 2 done
Analysis of the example
Here is a simple hello world in the parallel spirit of erlang. The program, par_hello, will create 3 processes, one manager process called "start( )" and 2 worker processes called speak(1) and speak(2) in a tree like relationship. Start( ) creates speak(1) and speak(2), then start( ) sends a message to each worker. The message is {hello, world}. Each worker process responds by printing out "hello world". All three are running simultaneously when line 7 starts.
Lines 1 to 4: see serial "hello world". Line 5 spawns a process called speak giving it one argument with the value 1. Line 5 also creates a variable Pid1 and gives it the processes id number of speak(1). Line 6 spawns a process called speak giving it one argument with the value 2. Line 6 also creates a variable Pid2 and gives it the process id number of speak(2). Line 7 uses the Pid1(process id number of speak(1) to send a message to speak(1). Line 8 uses the Pid2(process id number of speak(2) to send a message to speak(2). Line 9 "done" is an arbitrary atom that finishes the function start( ). Line 10 is a call to print formated text from the input/output(io) module(library). Line 11 starts the function speak(N). Line 12 starts to listen for a message. Line 13 lists the message that is received Line 14 shows what happens when the message in 13 is received. Line 14 prints out "hello world 1" if N is one or "hello world 2" if N is 2
Note: bang, ! in erlang means "send the following message".