< Erlang (programming language) | TutorialsRevision as of 06:07, 8 August 2009 by imported>Tom Morris
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.
|
Do you see this on PREVIEW? then SAVE! before following a link.
A - For a New Cluster use the following directions
Subpages format requires a metadata page.
Using the following instructions will complete the process of creating this article's subpages.
- Click the blue "metadata template" link below to create the page.
- On the edit page that appears paste in the article's title across from "
pagename = ".
- You might also fill out the checklist part of the form. Ignore the rest.
- For background, see Using the Subpages template Don't worry--you'll get the hang of it right away.
- Remember to hit Save!
the "metadata template".
However, you can create articles without subpages. Just delete the {{subpages}} template from the top of this page and this prompt will disappear. :) Don't feel obligated to use subpages, it's more important that you write sentences, which you can always do without writing fancy code.
|
B - For a Cluster Move use the following directions
The metadata template should be moved to the new name as the first step. Please revert this move and start by using the Move Cluster link at the top left of the talk page.
The name prior to this move can be found at the following link.
|
|
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".