Fallout from TaskBuilder changes

This commit brings code downstream of libstd up to date with the new
TaskBuilder API.
This commit is contained in:
Aaron Turon 2014-06-16 16:17:59 -07:00 committed by Alex Crichton
parent a23511a65d
commit f993495560
14 changed files with 48 additions and 82 deletions

View file

@ -366,22 +366,19 @@ fn monitor(f: proc():Send) {
#[cfg(not(rtopt))] #[cfg(not(rtopt))]
static STACK_SIZE: uint = 20000000; // 20MB static STACK_SIZE: uint = 20000000; // 20MB
let mut task_builder = TaskBuilder::new().named("rustc");
// FIXME: Hacks on hacks. If the env is trying to override the stack size
// then *don't* set it explicitly.
if os::getenv("RUST_MIN_STACK").is_none() {
task_builder.opts.stack_size = Some(STACK_SIZE);
}
let (tx, rx) = channel(); let (tx, rx) = channel();
let w = io::ChanWriter::new(tx); let w = io::ChanWriter::new(tx);
let mut r = io::ChanReader::new(rx); let mut r = io::ChanReader::new(rx);
match task_builder.try(proc() { let mut task = TaskBuilder::new().named("rustc").stderr(box w);
io::stdio::set_stderr(box w);
f() // FIXME: Hacks on hacks. If the env is trying to override the stack size
}) { // then *don't* set it explicitly.
if os::getenv("RUST_MIN_STACK").is_none() {
task = task.stack_size(STACK_SIZE);
}
match task.try(f) {
Ok(()) => { /* fallthrough */ } Ok(()) => { /* fallthrough */ }
Err(value) => { Err(value) => {
// Task failed without emitting a fatal diagnostic // Task failed without emitting a fatal diagnostic

View file

@ -459,7 +459,7 @@ mod tests {
use std::prelude::*; use std::prelude::*;
use std::comm::Empty; use std::comm::Empty;
use std::task; use std::task;
use std::task::TaskBuilder; use std::task::try_future;
use Arc; use Arc;
use super::{Mutex, Barrier, RWLock}; use super::{Mutex, Barrier, RWLock};
@ -629,17 +629,15 @@ mod tests {
let mut children = Vec::new(); let mut children = Vec::new();
for _ in range(0, 5) { for _ in range(0, 5) {
let arc3 = arc.clone(); let arc3 = arc.clone();
let mut builder = TaskBuilder::new(); children.push(try_future(proc() {
children.push(builder.future_result());
builder.spawn(proc() {
let lock = arc3.read(); let lock = arc3.read();
assert!(*lock >= 0); assert!(*lock >= 0);
}); }));
} }
// Wait for children to pass their asserts // Wait for children to pass their asserts
for r in children.mut_iter() { for r in children.mut_iter() {
assert!(r.recv().is_ok()); assert!(r.get_ref().is_ok());
} }
// Wait for writer to finish // Wait for writer to finish

View file

@ -1049,14 +1049,13 @@ pub fn run_test(opts: &TestOpts,
if nocapture { if nocapture {
drop((stdout, stderr)); drop((stdout, stderr));
} else { } else {
task.opts.stdout = Some(box stdout as Box<Writer + Send>); task = task.stdout(box stdout as Box<Writer + Send>);
task.opts.stderr = Some(box stderr as Box<Writer + Send>); task = task.stderr(box stderr as Box<Writer + Send>);
} }
let result_future = task.future_result(); let result_future = task.try_future(testfn);
task.spawn(testfn);
let stdout = reader.read_to_end().unwrap().move_iter().collect(); let stdout = reader.read_to_end().unwrap().move_iter().collect();
let task_result = result_future.recv(); let task_result = result_future.unwrap();
let test_result = calc_result(&desc, task_result.is_ok()); let test_result = calc_result(&desc, task_result.is_ok());
monitor_ch.send((desc.clone(), test_result, stdout)); monitor_ch.send((desc.clone(), test_result, stdout));
}) })

View file

@ -24,7 +24,6 @@ extern crate debug;
use std::comm; use std::comm;
use std::os; use std::os;
use std::task; use std::task;
use std::task::TaskBuilder;
use std::uint; use std::uint;
fn move_out<T>(_x: T) {} fn move_out<T>(_x: T) {}
@ -64,22 +63,20 @@ fn run(args: &[String]) {
let mut worker_results = Vec::new(); let mut worker_results = Vec::new();
for _ in range(0u, workers) { for _ in range(0u, workers) {
let to_child = to_child.clone(); let to_child = to_child.clone();
let mut builder = TaskBuilder::new(); worker_results.push(task::try_future(proc() {
worker_results.push(builder.future_result());
builder.spawn(proc() {
for _ in range(0u, size / workers) { for _ in range(0u, size / workers) {
//println!("worker {:?}: sending {:?} bytes", i, num_bytes); //println!("worker {:?}: sending {:?} bytes", i, num_bytes);
to_child.send(bytes(num_bytes)); to_child.send(bytes(num_bytes));
} }
//println!("worker {:?} exiting", i); //println!("worker {:?} exiting", i);
}); }));
} }
task::spawn(proc() { task::spawn(proc() {
server(&from_parent, &to_parent); server(&from_parent, &to_parent);
}); });
for r in worker_results.iter() { for r in worker_results.move_iter() {
r.recv(); r.unwrap();
} }
//println!("sending stop message"); //println!("sending stop message");

View file

@ -19,7 +19,6 @@ extern crate debug;
use std::os; use std::os;
use std::task; use std::task;
use std::task::TaskBuilder;
use std::uint; use std::uint;
fn move_out<T>(_x: T) {} fn move_out<T>(_x: T) {}
@ -58,29 +57,25 @@ fn run(args: &[String]) {
let mut worker_results = Vec::new(); let mut worker_results = Vec::new();
let from_parent = if workers == 1 { let from_parent = if workers == 1 {
let (to_child, from_parent) = channel(); let (to_child, from_parent) = channel();
let mut builder = TaskBuilder::new(); worker_results.push(task::try_future(proc() {
worker_results.push(builder.future_result());
builder.spawn(proc() {
for _ in range(0u, size / workers) { for _ in range(0u, size / workers) {
//println!("worker {:?}: sending {:?} bytes", i, num_bytes); //println!("worker {:?}: sending {:?} bytes", i, num_bytes);
to_child.send(bytes(num_bytes)); to_child.send(bytes(num_bytes));
} }
//println!("worker {:?} exiting", i); //println!("worker {:?} exiting", i);
}); }));
from_parent from_parent
} else { } else {
let (to_child, from_parent) = channel(); let (to_child, from_parent) = channel();
for _ in range(0u, workers) { for _ in range(0u, workers) {
let to_child = to_child.clone(); let to_child = to_child.clone();
let mut builder = TaskBuilder::new(); worker_results.push(task::try_future(proc() {
worker_results.push(builder.future_result());
builder.spawn(proc() {
for _ in range(0u, size / workers) { for _ in range(0u, size / workers) {
//println!("worker {:?}: sending {:?} bytes", i, num_bytes); //println!("worker {:?}: sending {:?} bytes", i, num_bytes);
to_child.send(bytes(num_bytes)); to_child.send(bytes(num_bytes));
} }
//println!("worker {:?} exiting", i); //println!("worker {:?} exiting", i);
}); }));
} }
from_parent from_parent
}; };
@ -88,8 +83,8 @@ fn run(args: &[String]) {
server(&from_parent, &to_parent); server(&from_parent, &to_parent);
}); });
for r in worker_results.iter() { for r in worker_results.move_iter() {
r.recv(); r.unwrap();
} }
//println!("sending stop message"); //println!("sending stop message");

View file

@ -24,7 +24,6 @@ extern crate time;
use std::os; use std::os;
use std::result::{Ok, Err}; use std::result::{Ok, Err};
use std::task; use std::task;
use std::task::TaskBuilder;
use std::uint; use std::uint;
fn fib(n: int) -> int { fn fib(n: int) -> int {
@ -79,14 +78,12 @@ fn stress_task(id: int) {
fn stress(num_tasks: int) { fn stress(num_tasks: int) {
let mut results = Vec::new(); let mut results = Vec::new();
for i in range(0, num_tasks) { for i in range(0, num_tasks) {
let mut builder = TaskBuilder::new(); results.push(task::try_future(proc() {
results.push(builder.future_result());
builder.spawn(proc() {
stress_task(i); stress_task(i);
}); }));
} }
for r in results.iter() { for r in results.move_iter() {
r.recv(); r.unwrap();
} }
} }

View file

@ -13,9 +13,7 @@ use std::task::TaskBuilder;
static generations: uint = 1024+256+128+49; static generations: uint = 1024+256+128+49;
fn spawn(f: proc():Send) { fn spawn(f: proc():Send) {
let mut t = TaskBuilder::new(); TaskBuilder::new().stack_size(32 * 1024).spawn(f)
t.opts.stack_size = Some(32 * 1024);
t.spawn(f);
} }
fn child_no(x: uint) -> proc():Send { fn child_no(x: uint) -> proc():Send {

View file

@ -9,7 +9,6 @@
// except according to those terms. // except according to those terms.
use std::task; use std::task;
use std::task::TaskBuilder;
pub fn main() { test00(); } pub fn main() { test00(); }
@ -17,9 +16,7 @@ fn start(_task_number: int) { println!("Started / Finished task."); }
fn test00() { fn test00() {
let i: int = 0; let i: int = 0;
let mut builder = TaskBuilder::new(); let mut result = task::try_future(proc() {
let mut result = builder.future_result();
builder.spawn(proc() {
start(i) start(i)
}); });
@ -31,7 +28,7 @@ fn test00() {
} }
// Try joining tasks that have already finished. // Try joining tasks that have already finished.
result.recv(); result.unwrap();
println!("Joined task."); println!("Joined task.");
} }

View file

@ -10,7 +10,7 @@
extern crate debug; extern crate debug;
use std::task::TaskBuilder; use std::task;
pub fn main() { println!("===== WITHOUT THREADS ====="); test00(); } pub fn main() { println!("===== WITHOUT THREADS ====="); test00(); }
@ -39,14 +39,12 @@ fn test00() {
let mut results = Vec::new(); let mut results = Vec::new();
while i < number_of_tasks { while i < number_of_tasks {
let tx = tx.clone(); let tx = tx.clone();
let mut builder = TaskBuilder::new(); results.push(task::try_future({
results.push(builder.future_result());
builder.spawn({
let i = i; let i = i;
proc() { proc() {
test00_start(&tx, i, number_of_messages) test00_start(&tx, i, number_of_messages)
} }
}); }));
i = i + 1; i = i + 1;
} }
@ -62,7 +60,7 @@ fn test00() {
} }
// Join spawned tasks... // Join spawned tasks...
for r in results.iter() { r.recv(); } for r in results.mut_iter() { r.get_ref(); }
println!("Completed: Final number is: "); println!("Completed: Final number is: ");
println!("{:?}", sum); println!("{:?}", sum);

View file

@ -10,7 +10,7 @@
extern crate debug; extern crate debug;
use std::task::TaskBuilder; use std::task;
pub fn main() { test00(); } pub fn main() { test00(); }
@ -25,9 +25,7 @@ fn test00() {
let (tx, rx) = channel(); let (tx, rx) = channel();
let number_of_messages: int = 10; let number_of_messages: int = 10;
let mut builder = TaskBuilder::new(); let result = task::try_future(proc() {
let result = builder.future_result();
builder.spawn(proc() {
test00_start(&tx, number_of_messages); test00_start(&tx, number_of_messages);
}); });
@ -38,7 +36,7 @@ fn test00() {
i += 1; i += 1;
} }
result.recv(); result.unwrap();
assert_eq!(sum, number_of_messages * (number_of_messages - 1) / 2); assert_eq!(sum, number_of_messages * (number_of_messages - 1) / 2);
} }

View file

@ -9,14 +9,14 @@
// except according to those terms. // except according to those terms.
use std::io::{ChanReader, ChanWriter}; use std::io::{ChanReader, ChanWriter};
use std::task::build; use std::task::TaskBuilder;
fn main() { fn main() {
let (tx, rx) = channel(); let (tx, rx) = channel();
let mut reader = ChanReader::new(rx); let mut reader = ChanReader::new(rx);
let stderr = ChanWriter::new(tx); let stderr = ChanWriter::new(tx);
let res = build().stderr(box stderr as Box<Writer + Send>).try(proc() -> () { let res = TaskBuilder::new().stderr(box stderr as Box<Writer + Send>).try(proc() -> () {
fail!("Hello, world!") fail!("Hello, world!")
}); });
assert!(res.is_err()); assert!(res.is_err());

View file

@ -60,9 +60,7 @@ fn main() {
let (tx, rx) = channel(); let (tx, rx) = channel();
for _ in range(0, 1000) { for _ in range(0, 1000) {
let tx = tx.clone(); let tx = tx.clone();
let mut builder = TaskBuilder::new(); TaskBuilder::new().stack_size(64 * 1024).spawn(proc() {
builder.opts.stack_size = Some(64 * 1024);
builder.spawn(proc() {
let host = addr.ip.to_str(); let host = addr.ip.to_str();
let port = addr.port; let port = addr.port;
match TcpStream::connect(host.as_slice(), port) { match TcpStream::connect(host.as_slice(), port) {

View file

@ -9,18 +9,15 @@
// except according to those terms. // except according to those terms.
use std::task; use std::task;
use std::task::TaskBuilder;
pub fn main() { pub fn main() {
let mut builder = TaskBuilder::new(); let mut result = task::try_future(child);
let mut result = builder.future_result();
builder.spawn(child);
println!("1"); println!("1");
task::deschedule(); task::deschedule();
println!("2"); println!("2");
task::deschedule(); task::deschedule();
println!("3"); println!("3");
result.recv(); result.unwrap();
} }
fn child() { fn child() {

View file

@ -9,15 +9,12 @@
// except according to those terms. // except according to those terms.
use std::task; use std::task;
use std::task::TaskBuilder;
pub fn main() { pub fn main() {
let mut builder = TaskBuilder::new(); let mut result = task::try_future(child);
let mut result = builder.future_result();
builder.spawn(child);
println!("1"); println!("1");
task::deschedule(); task::deschedule();
result.recv(); result.unwrap();
} }
fn child() { println!("2"); } fn child() { println!("2"); }