]> gitweb.factorcode.org Git - factor.git/blob - basis/concurrency/exchangers/exchangers-tests.factor
569b1a72c2cf3fee247f1e489dfaa1594e853a54
[factor.git] / basis / concurrency / exchangers / exchangers-tests.factor
1 IN: concurrency.exchangers.tests\r
2 USING: sequences tools.test concurrency.exchangers\r
3 concurrency.count-downs concurrency.promises locals kernel\r
4 threads ;\r
5 \r
6 :: exchanger-test ( -- )\r
7     [let |\r
8         ex [ <exchanger> ]\r
9         c [ 2 <count-down> ]\r
10         v1! [ f ]\r
11         v2! [ f ]\r
12         pr [ <promise> ] |\r
13 \r
14         [\r
15             c await\r
16             v1 ", " v2 3append pr fulfill\r
17         ] "Awaiter" spawn drop\r
18 \r
19         [\r
20             "Goodbye world" ex exchange v1! c count-down\r
21         ] "Exchanger 1" spawn drop\r
22 \r
23         [\r
24             "Hello world" ex exchange v2! c count-down\r
25         ] "Exchanger 2" spawn drop\r
26 \r
27         pr ?promise\r
28     ] ;\r
29 \r
30 [ "Hello world, Goodbye world" ] [ exchanger-test ] unit-test\r