concurrency.combinators: adding parallel words for cartesian-{map,each}.
parent
adc3ee4c81
commit
3d2cd564bf
|
@ -34,10 +34,16 @@ $nl
|
||||||
parallel-each
|
parallel-each
|
||||||
2parallel-each
|
2parallel-each
|
||||||
parallel-map
|
parallel-map
|
||||||
parallel-product-map
|
|
||||||
2parallel-map
|
2parallel-map
|
||||||
parallel-filter
|
parallel-filter
|
||||||
}
|
}
|
||||||
|
"Concurrent product sequence combinators:"
|
||||||
|
{ $subsections
|
||||||
|
parallel-product-each
|
||||||
|
parallel-cartesian-each
|
||||||
|
parallel-product-map
|
||||||
|
parallel-cartesian-map
|
||||||
|
}
|
||||||
"Concurrent cleave combinators:"
|
"Concurrent cleave combinators:"
|
||||||
{ $subsections
|
{ $subsections
|
||||||
parallel-cleave
|
parallel-cleave
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
! Copyright (C) 2008 Slava Pestov.
|
! Copyright (C) 2008 Slava Pestov.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: combinators concurrency.count-downs concurrency.futures
|
USING: arrays combinators concurrency.count-downs
|
||||||
fry generalizations kernel macros sequences sequences.product ;
|
concurrency.futures fry generalizations kernel macros sequences
|
||||||
|
sequences.private sequences.product ;
|
||||||
IN: concurrency.combinators
|
IN: concurrency.combinators
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
@ -21,6 +22,12 @@ PRIVATE>
|
||||||
'[ _ 2curry _ spawn-stage ] 2each
|
'[ _ 2curry _ spawn-stage ] 2each
|
||||||
] (parallel-each) ; inline
|
] (parallel-each) ; inline
|
||||||
|
|
||||||
|
: parallel-product-each ( seq quot: ( elt -- ) -- )
|
||||||
|
[ <product-sequence> ] dip parallel-each ;
|
||||||
|
|
||||||
|
: parallel-cartesian-each ( seq1 seq2 quot: ( elt1 elt2 -- ) -- )
|
||||||
|
[ 2array ] dip [ first2-unsafe ] prepose parallel-product-each ;
|
||||||
|
|
||||||
: parallel-filter ( seq quot: ( elt -- ? ) -- newseq )
|
: parallel-filter ( seq quot: ( elt -- ? ) -- newseq )
|
||||||
over [ selector [ parallel-each ] dip ] dip like ; inline
|
over [ selector [ parallel-each ] dip ] dip like ; inline
|
||||||
|
|
||||||
|
@ -36,11 +43,14 @@ PRIVATE>
|
||||||
: parallel-map ( seq quot: ( elt -- newelt ) -- newseq )
|
: parallel-map ( seq quot: ( elt -- newelt ) -- newseq )
|
||||||
[future] map future-values ; inline
|
[future] map future-values ; inline
|
||||||
|
|
||||||
|
: 2parallel-map ( seq1 seq2 quot: ( elt1 elt2 -- newelt ) -- newseq )
|
||||||
|
'[ _ 2curry future ] 2map future-values ;
|
||||||
|
|
||||||
: parallel-product-map ( seq quot: ( elt -- newelt ) -- newseq )
|
: parallel-product-map ( seq quot: ( elt -- newelt ) -- newseq )
|
||||||
[ <product-sequence> ] dip parallel-map ;
|
[ <product-sequence> ] dip parallel-map ;
|
||||||
|
|
||||||
: 2parallel-map ( seq1 seq2 quot: ( elt1 elt2 -- newelt ) -- newseq )
|
: parallel-cartesian-map ( seq1 seq2 quot: ( elt1 elt2 -- newelt ) -- newseq )
|
||||||
'[ _ 2curry future ] 2map future-values ;
|
[ 2array ] dip [ first2-unsafe ] prepose parallel-product-map ;
|
||||||
|
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue