blob: 7a6ddca2c491b445a82f6cf3887ca65477c00361 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
⍝ The following demonstrates message passing between an 'iota sever',
⍝ and a client (the user of the iota function). The client always initiates
⍝ communication, and the server must be running, but the client should not
⍝ be able to notice a difference between monadic ⍳ and the iota function,
⍝ even though one does the computation in a different thread.
iotaServer←{
msg←1⍨⍇0
msg≡'stop': ⎕←'Bye bye from indexer'
(from num)←msg
_←(⍳num)⍈from
∇⍵
}
id←0 ⍝ this is an invalid thread id, so it is a sane starting point
start←{
id=0: iotaServer&⍬
id
}
stop←{
'stop'⍈id
}
iota←{
⍝ Sending messages to a nonexisting thread throws a domain error (11)
11::'Sorry, the iota server is not running'
_←(⎕self ⍵)⍈id
1⍨⍇0
}
|