2009-05-16 01:29:21 -04:00
|
|
|
USING: tools.test concurrency.exchangers
|
2008-02-18 17:20:18 -05:00
|
|
|
concurrency.count-downs concurrency.promises locals kernel
|
|
|
|
threads ;
|
2009-05-16 01:29:21 -04:00
|
|
|
FROM: sequences => 3append ;
|
2009-08-13 20:21:44 -04:00
|
|
|
IN: concurrency.exchangers.tests
|
2008-02-18 17:20:18 -05:00
|
|
|
|
2009-04-17 15:44:08 -04:00
|
|
|
:: exchanger-test ( -- string )
|
2009-10-27 22:50:31 -04:00
|
|
|
<exchanger> :> ex
|
|
|
|
2 <count-down> :> c
|
|
|
|
f :> v1!
|
|
|
|
f :> v2!
|
|
|
|
<promise> :> pr
|
2008-02-18 17:20:18 -05:00
|
|
|
|
2009-10-27 22:50:31 -04:00
|
|
|
[
|
|
|
|
c await
|
|
|
|
v1 ", " v2 3append pr fulfill
|
|
|
|
] "Awaiter" spawn drop
|
2008-02-18 17:20:18 -05:00
|
|
|
|
2009-10-27 22:50:31 -04:00
|
|
|
[
|
|
|
|
"Goodbye world" ex exchange v1! c count-down
|
|
|
|
] "Exchanger 1" spawn drop
|
2008-02-18 17:20:18 -05:00
|
|
|
|
2009-10-27 22:50:31 -04:00
|
|
|
[
|
|
|
|
"Hello world" ex exchange v2! c count-down
|
|
|
|
] "Exchanger 2" spawn drop
|
2008-02-18 17:20:18 -05:00
|
|
|
|
2009-10-27 22:50:31 -04:00
|
|
|
pr ?promise ;
|
2008-02-18 17:20:18 -05:00
|
|
|
|
|
|
|
[ "Hello world, Goodbye world" ] [ exchanger-test ] unit-test
|