| 
									
										
										
										
											2008-02-18 10:08:59 -05:00
										 |  |  | ! Copyright (C) 2008 Slava Pestov. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							|  |  |  | USING: concurrency.futures concurrency.count-downs sequences | 
					
						
							|  |  |  | kernel ;
 | 
					
						
							|  |  |  | IN: concurrency.combinators | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-05-06 22:23:07 -04:00
										 |  |  | : (parallel-each) ( n quot -- )
 | 
					
						
							|  |  |  |     >r <count-down> r> keep await ; inline
 | 
					
						
							| 
									
										
										
										
											2008-02-18 10:08:59 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | : parallel-each ( seq quot -- )
 | 
					
						
							| 
									
										
										
										
											2008-05-06 22:23:07 -04:00
										 |  |  |     over length [ | 
					
						
							|  |  |  |         [ >r curry r> spawn-stage ] 2curry each
 | 
					
						
							|  |  |  |     ] (parallel-each) ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : 2parallel-each ( seq1 seq2 quot -- )
 | 
					
						
							|  |  |  |     2over min-length [ | 
					
						
							|  |  |  |         [ >r 2curry r> spawn-stage ] 2curry 2each
 | 
					
						
							|  |  |  |     ] (parallel-each) ; inline
 | 
					
						
							| 
									
										
										
										
											2008-02-18 17:20:18 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-04-26 00:17:08 -04:00
										 |  |  | : parallel-filter ( seq quot -- newseq )
 | 
					
						
							| 
									
										
										
										
											2008-02-18 17:20:18 -05:00
										 |  |  |     over >r pusher >r each r> r> like ; inline
 | 
					
						
							| 
									
										
										
										
											2008-05-06 22:23:07 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : future-values dup [ ?future ] change-each ; inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : parallel-map ( seq quot -- newseq )
 | 
					
						
							|  |  |  |     [ curry future ] curry map future-values ;
 | 
					
						
							|  |  |  |     inline
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : 2parallel-map ( seq1 seq2 quot -- newseq )
 | 
					
						
							|  |  |  |     [ 2curry future ] curry 2map future-values ;
 |