Distributed programming: Difference between revisions
Content added Content deleted
m (→{{header|Objective-C}}: modernize) |
(Add Nimrod) |
||
Line 607: | Line 607: | ||
ParallelEvaluate[RandomReal[]] |
ParallelEvaluate[RandomReal[]] |
||
</lang> |
</lang> |
||
=={{header|Nimrod}}== |
|||
{{libheader|nanomsg}} |
|||
<lang nimrod>import os, nanomsg |
|||
proc sendMsg(s, msg) = |
|||
echo "SENDING \"",msg,"\"" |
|||
let bytes = s.send(msg.cstring, msg.len + 1, 0) |
|||
assert bytes == msg.len + 1 |
|||
proc recvMsg(s) = |
|||
var buf: cstring |
|||
let bytes = s.recv(addr buf, MSG, 0) |
|||
if bytes > 0: |
|||
echo "RECEIVED \"",buf,"\"" |
|||
discard freemsg buf |
|||
proc sendRecv(s, msg) = |
|||
var to: cint = 100 |
|||
discard s.setSockOpt(SOL_SOCKET, RCVTIMEO, addr to, sizeof to) |
|||
while true: |
|||
s.recvMsg |
|||
sleep 1000 |
|||
s.sendMsg msg |
|||
proc node0(url: string) = |
|||
var s = socket(AF_SP, nanomsg.PAIR) |
|||
assert s >= 0 |
|||
let res = s.bindd url |
|||
assert res >= 0 |
|||
s.sendRecv "node0" |
|||
discard s.shutdown 0 |
|||
proc node1(url: string) = |
|||
var s = socket(AF_SP, nanomsg.PAIR) |
|||
assert s >= 0 |
|||
let res = s.connect url |
|||
assert res >= 0 |
|||
s.sendRecv "node1" |
|||
discard s.shutdown 0 |
|||
if paramStr(1) == "node0": |
|||
node0 paramStr(2) |
|||
elif paramStr(1) == "node1": |
|||
node1 paramStr(2)</lang> |
|||
Usage: |
|||
<pre>./pair node0 tcp://127.0.0.1:25000 |
|||
./pair node1 tcp://127.0.0.1:25000</pre> |
|||
=={{header|Objective-C}}== |
=={{header|Objective-C}}== |