File tree Expand file tree Collapse file tree 2 files changed +9
-5
lines changed Expand file tree Collapse file tree 2 files changed +9
-5
lines changed Original file line number Diff line number Diff line change 2
2
refs/heads/master: 61b1875c16de39c166b0f4d54bba19f9c6777d1a
3
3
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4
4
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
5
- refs/heads/try: 222cfbec6493d3cd099a7592e7948a7172469a66
5
+ refs/heads/try: 4675f860849c5d064d1279b2eff324a271024254
6
6
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
Original file line number Diff line number Diff line change 1
1
export parmap;
2
2
3
- fn parmap < T : send , U : send > ( v : [ T ] , f : fn ~( T ) -> U ) -> [ U ] {
3
+ fn parmap < T : send , U : send > ( v : [ T ] , f : fn ~( T ) -> U ) -> [ U ] unsafe {
4
4
let futures = vec:: map ( v) { |elt|
5
- future:: spawn { ||
6
- f ( elt)
5
+ let po = comm:: port ( ) ;
6
+ let ch = comm:: chan ( po) ;
7
+ let addr = ptr:: addr_of ( elt) ;
8
+ task:: spawn { ||
9
+ comm:: send ( ch, f ( * addr) ) ;
7
10
}
11
+ po
8
12
} ;
9
13
vec:: map ( futures) { |future|
10
- future :: get ( future)
14
+ comm :: recv ( future)
11
15
}
12
16
}
13
17
You can’t perform that action at this time.
0 commit comments