1 ! Copyright (C) 2008 Slava Pestov.
\r
2 ! See http://factorcode.org/license.txt for BSD license.
\r
3 USING: concurrency.futures concurrency.count-downs sequences
\r
5 IN: concurrency.combinators
\r
8 : (parallel-each) ( n quot -- )
\r
9 >r <count-down> r> keep await ; inline
\r
12 : parallel-each ( seq quot -- )
\r
14 [ >r curry r> spawn-stage ] 2curry each
\r
15 ] (parallel-each) ; inline
\r
17 : 2parallel-each ( seq1 seq2 quot -- )
\r
19 [ >r 2curry r> spawn-stage ] 2curry 2each
\r
20 ] (parallel-each) ; inline
\r
22 : parallel-filter ( seq quot -- newseq )
\r
23 over >r pusher >r each r> r> like ; inline
\r
26 : future-values dup [ ?future ] change-each ; inline
\r
29 : parallel-map ( seq quot -- newseq )
\r
30 [ curry future ] curry map future-values ;
\r
33 : 2parallel-map ( seq1 seq2 quot -- newseq )
\r
34 [ 2curry future ] curry 2map future-values ;
\r