Fallout from TaskBuilder changes
This commit brings code downstream of libstd up to date with the new TaskBuilder API.
This commit is contained in:
parent
a23511a65d
commit
f993495560
14 changed files with 48 additions and 82 deletions
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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));
|
||||||
})
|
})
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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());
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
|
@ -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"); }
|
||||||
|
|
Loading…
Add table
Reference in a new issue