File tree Expand file tree Collapse file tree 13 files changed +50
-66
lines changed Expand file tree Collapse file tree 13 files changed +50
-66
lines changed Original file line number Diff line number Diff line change 1
1
---
2
- refs/heads/master: e0e9e451e7b102f53bd9d86b638d9c5d7fae3cc8
2
+ refs/heads/master: b30a58abe24643bdad8473850945f46927fb186b
3
3
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4
4
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
5
5
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be
Original file line number Diff line number Diff line change @@ -57,10 +57,10 @@ fn run(args: &[~str]) {
57
57
let start = std:: time:: precise_time_s ( ) ;
58
58
let mut worker_results = ~[ ] ;
59
59
for uint:: range( 0 u, workers) |i| {
60
- let builder = task:: builder ( ) ;
61
- vec:: push ( worker_results, task:: future_result ( builder) ) ;
62
60
let to_child = to_child. clone ( ) ;
63
- do task:: run ( builder) {
61
+ do task:: task ( ) . future_result ( |-r| {
62
+ vec:: push ( worker_results, r) ;
63
+ } ) . spawn {
64
64
for uint:: range( 0 u, size / workers) |_i| {
65
65
//#error("worker %?: sending %? bytes", i, num_bytes);
66
66
to_child. send ( bytes ( num_bytes) ) ;
Original file line number Diff line number Diff line change @@ -52,11 +52,11 @@ fn run(args: &[~str]) {
52
52
let start = std:: time:: precise_time_s ( ) ;
53
53
let mut worker_results = ~[ ] ;
54
54
for uint:: range( 0 u, workers) |i| {
55
- let builder = task:: builder ( ) ;
56
- vec:: push ( worker_results, task:: future_result ( builder) ) ;
57
55
let ( to_child, from_parent_) = pipes:: stream ( ) ;
58
56
from_parent. add ( from_parent_) ;
59
- do task:: run ( builder) {
57
+ do task:: task ( ) . future_result ( |-r| {
58
+ vec:: push ( worker_results, r) ;
59
+ } ) . spawn {
60
60
for uint:: range( 0 u, size / workers) |_i| {
61
61
//#error("worker %?: sending %? bytes", i, num_bytes);
62
62
to_child. send ( bytes ( num_bytes) ) ;
Original file line number Diff line number Diff line change @@ -39,9 +39,9 @@ fn run(args: ~[~str]) {
39
39
let to_child = to_child;
40
40
let mut worker_results = ~[ ] ;
41
41
for uint:: range( 0 u, workers) |_i| {
42
- let builder = task:: builder ( ) ;
43
- vec:: push ( worker_results, task :: future_result ( builder ) ) ;
44
- do task :: run ( builder ) {
42
+ do task:: task ( ) . future_result ( |-r| {
43
+ vec:: push( worker_results, r ) ;
44
+ } ) . spawn {
45
45
for uint:: range( 0 u, size / workers) |_i| {
46
46
comm:: send( to_child, bytes( 100 u) ) ;
47
47
}
Original file line number Diff line number Diff line change @@ -71,9 +71,11 @@ fn stress_task(&&id: int) {
71
71
fn stress ( num_tasks : int ) {
72
72
let mut results = ~[ ] ;
73
73
for range( 0 , num_tasks) |i| {
74
- let builder = task:: builder ( ) ;
75
- results += ~[ task:: future_result ( builder) ] ;
76
- task:: run ( builder, || stress_task ( i) ) ;
74
+ do task:: task( ) . future_result( |-r| {
75
+ results += ~[ r] ;
76
+ } ) . spawn {
77
+ stress_task( i) ;
78
+ }
77
79
}
78
80
for results. each |r| { future:: get( r) ; }
79
81
}
Original file line number Diff line number Diff line change @@ -62,9 +62,11 @@ mod map_reduce {
62
62
~[ future:: future < task:: task_result > ] {
63
63
let mut results = ~[ ] ;
64
64
for inputs. each |i| {
65
- let builder = task:: builder ( ) ;
66
- results += ~[ task:: future_result ( builder) ] ;
67
- task:: run ( builder, || map_task ( ctrl, i) ) ;
65
+ do task:: task( ) . future_result( |-r| {
66
+ results += ~[ r] ; // Add result for this task to the list
67
+ } ) . spawn {
68
+ map_task( ctrl, i) ; // Task body
69
+ }
68
70
}
69
71
ret results;
70
72
}
@@ -160,9 +162,11 @@ mod map_reduce {
160
162
// log(error, "creating new reducer for " + k);
161
163
let p = port( ) ;
162
164
let ch = chan( p) ;
163
- let builder = task:: builder ( ) ;
164
- results += ~[ task:: future_result ( builder) ] ;
165
- task:: run ( builder, || reduce_task ( k, ch) ) ;
165
+ do task:: task( ) . future_result( |-r| {
166
+ results += ~[ r] ; // Add result for this task
167
+ } ) . spawn {
168
+ reduce_task( k, ch) ; // Task body
169
+ }
166
170
c = recv( p) ;
167
171
reducers. insert( k, c) ;
168
172
}
Original file line number Diff line number Diff line change @@ -14,29 +14,9 @@ fn run(i: int) {
14
14
ret;
15
15
}
16
16
17
- let builder = task:: builder ( ) ;
18
- let opts = {
19
- sched: some ( {
20
- mode: task:: osmain,
21
- foreign_stack_size: none
22
- } )
23
- with task:: get_opts ( builder)
24
- } ;
25
- task:: set_opts ( builder, opts) ;
26
- task:: unsupervise ( builder) ;
27
- do task:: run ( builder) {
17
+ do task:: task ( ) . sched_mode ( task:: osmain) . unlinked ( ) . spawn {
28
18
task:: yield ( ) ;
29
- let builder = task:: builder ( ) ;
30
- let opts = {
31
- sched: some ( {
32
- mode: task:: single_threaded,
33
- foreign_stack_size: none
34
- } )
35
- with task:: get_opts ( builder)
36
- } ;
37
- task:: set_opts ( builder, opts) ;
38
- task:: unsupervise ( builder) ;
39
- do task:: run ( builder) {
19
+ do task:: task ( ) . sched_mode ( task:: single_threaded) . unlinked ( ) . spawn {
40
20
task:: yield ( ) ;
41
21
run ( i - 1 ) ;
42
22
task:: yield ( ) ;
Original file line number Diff line number Diff line change @@ -7,9 +7,10 @@ fn start(&&task_number: int) { #debug("Started / Finished task."); }
7
7
8
8
fn test00 ( ) {
9
9
let i: int = 0 ;
10
- let builder = task:: builder ( ) ;
11
- let r = task:: future_result ( builder) ;
12
- task:: run ( builder, || start ( i) ) ;
10
+ let mut result = none;
11
+ do task:: task ( ) . future_result ( |-r| { result = some ( r) ; } ) . spawn {
12
+ start ( i)
13
+ }
13
14
14
15
// Sleep long enough for the task to finish.
15
16
let mut i = 0 ;
@@ -19,7 +20,7 @@ fn test00() {
19
20
}
20
21
21
22
// Try joining tasks that have already finished.
22
- future:: get ( r ) ;
23
+ future:: get ( option :: unwrap ( result ) ) ;
23
24
24
25
#debug ( "Joined task." ) ;
25
26
}
Original file line number Diff line number Diff line change @@ -32,9 +32,9 @@ fn test00() {
32
32
// Create and spawn tasks...
33
33
let mut results = ~[ ] ;
34
34
while i < number_of_tasks {
35
- let builder = task:: builder ( ) ;
36
- results += ~[ task :: future_result ( builder ) ] ;
37
- do task :: run ( builder ) |copy i| {
35
+ do task:: task ( ) . future_result ( |-r| {
36
+ results += ~[ r ] ;
37
+ } ) . spawn |copy i| {
38
38
test00_start ( ch, i, number_of_messages)
39
39
}
40
40
i = i + 1 ;
Original file line number Diff line number Diff line change @@ -16,9 +16,8 @@ fn test00() {
16
16
let number_of_messages: int = 10 ;
17
17
let ch = comm:: chan ( p) ;
18
18
19
- let builder = task:: builder ( ) ;
20
- let r = task:: future_result ( builder) ;
21
- do task:: run ( builder) {
19
+ let mut result = none;
20
+ do task:: task ( ) . future_result ( |-r| { result = some ( r) ; } ) . spawn {
22
21
test00_start ( ch, number_of_messages) ;
23
22
}
24
23
@@ -29,7 +28,7 @@ fn test00() {
29
28
i += 1 ;
30
29
}
31
30
32
- future:: get ( r ) ;
31
+ future:: get ( option :: unwrap ( result ) ) ;
33
32
34
33
assert ( sum == number_of_messages * ( number_of_messages - 1 ) / 2 ) ;
35
34
}
Original file line number Diff line number Diff line change @@ -41,9 +41,9 @@ fn test00() {
41
41
let mut results = ~[ ] ;
42
42
while i < number_of_tasks {
43
43
i = i + 1 ;
44
- let builder = task:: builder ( ) ;
45
- results += ~[ task :: future_result ( builder ) ] ;
46
- do task :: run ( builder ) |copy i| {
44
+ do task:: task ( ) . future_result ( |-r| {
45
+ results += ~[ r ] ;
46
+ } ) . spawn |copy i| {
47
47
test00_start ( ch, i, number_of_messages) ;
48
48
}
49
49
}
@@ -128,9 +128,9 @@ fn test06() {
128
128
let mut results = ~[ ] ;
129
129
while i < number_of_tasks {
130
130
i = i + 1 ;
131
- let builder = task:: builder ( ) ;
132
- results += ~[ task :: future_result ( builder ) ] ;
133
- do task :: run ( builder ) |copy i| {
131
+ do task:: task ( ) . future_result ( |-r| {
132
+ results += ~[ r ] ;
133
+ } ) . spawn |copy i| {
134
134
test06_start ( i) ;
135
135
} ;
136
136
}
Original file line number Diff line number Diff line change @@ -4,15 +4,14 @@ import task;
4
4
import task:: * ;
5
5
6
6
fn main ( ) {
7
- let builder = task:: builder ( ) ;
8
- let result = task:: future_result ( builder) ;
9
- task:: run ( builder, || child ( ) ) ;
7
+ let mut result = none;
8
+ task:: task ( ) . future_result ( |-r| { result = some ( r) ; } ) . spawn ( child) ;
10
9
#error ( "1" ) ;
11
10
yield ( ) ;
12
11
#error ( "2" ) ;
13
12
yield ( ) ;
14
13
#error ( "3" ) ;
15
- future:: get ( result) ;
14
+ future:: get ( option :: unwrap ( result) ) ;
16
15
}
17
16
18
17
fn child ( ) {
Original file line number Diff line number Diff line change @@ -4,12 +4,11 @@ import task;
4
4
import task:: * ;
5
5
6
6
fn main ( ) {
7
- let builder = task:: builder ( ) ;
8
- let result = task:: future_result ( builder) ;
9
- task:: run ( builder, || child ( ) ) ;
7
+ let mut result = none;
8
+ task:: task ( ) . future_result ( |-r| { result = some ( r) ; } ) . spawn ( child) ;
10
9
#error ( "1" ) ;
11
10
yield ( ) ;
12
- future:: get ( result) ;
11
+ future:: get ( option :: unwrap ( result) ) ;
13
12
}
14
13
15
14
fn child ( ) { #error ( "2" ) ; }
You can’t perform that action at this time.
0 commit comments