﻿⍝ Keyed File - With Isolates
]load c:\dyalog16\tands\KF
)ed KF
KF.FILE
⎕NDELETE KF.FILE
1 KF.IO 1       ⍝ Set value for Key 1 to 1
KF.IO 1         ⍝ Read value for Key 1
⎕NULL KF.IO 1   ⍝ Delete Key 1
KF.Test ''      ⍝ Run performance test (Trace Me!)
)copy isolate
isolate.Config ''
isolate.Config'isolates' 1 ⍝ Only ONE isolate per process!
iKF←isolate.New KF     ⍝ Clone KF as an isolate (in a new process)
1 iKF.IO 1
KF.IO 1
KFs←iKF,isolate.New KF ⍝ Now we have 2
2 3 KFs.IO 2 3         ⍝ Parallel updates
KF.IO 3                ⍝ Read in parent process

⍝ This should fail:
KFs.Test 1 2           ⍝ 2 Parallel tests using keys 1 & 2
KFs.(⎕FUNTIE ⎕FNUMS)
⎕NDELETE KF.FILE
⍝ Fix the problem with ⎕FHOLDS?
⍝ NB This is Exercise 9
)ed KF
KFs←isolate.New¨KF KF KF
)erase iKF KFs
KFs←isolate.New¨KF KF KF
z←KFs.Test 1 2 3       ⍝ 3 Parallel tests
isolate.Running 'z'
⍪z
3 3⍴'\○/ | / \'
⎕EX 'KF' 'KFs'
)copy dfns queens
]disp queens 5
nq←queens II 13 ⍝ II is model of ∥
'MYGUI' ⎕WC 'Form' 'Hello Glasgow!' ('Posn' 10 10)('Size' 10 40)
'MYGUI.TEXT'⎕WC'Label'(txt←'# of solutions to queens 13 is ...')('Size'⍬ 90)('Font' 'Courier' 20)
{MYGUI.TEXT.Caption←(¯3↓txt),⍕≢nq}&0
⎕DQ 'MYGUI'
