Move task::task() to TaskBuilder::new()

The constructor for `TaskBuilder` is being changed to an associated
function called `new` for consistency with the rest of the standard
library.

Closes #13666

[breaking-change]
This commit is contained in:
Steven Fackler
2014-04-21 21:19:59 -07:00
parent 4401f88688
commit adeeadf49f
18 changed files with 61 additions and 61 deletions

View File

@@ -55,7 +55,7 @@ use std::cmp;
use std::io; use std::io;
use std::os; use std::os;
use std::str; use std::str;
use std::task; use std::task::TaskBuilder;
use syntax::ast; use syntax::ast;
use syntax::diagnostic::Emitter; use syntax::diagnostic::Emitter;
use syntax::diagnostic; use syntax::diagnostic;
@@ -374,7 +374,7 @@ pub 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 = task::task().named("rustc"); let mut task_builder = TaskBuilder::new().named("rustc");
// FIXME: Hacks on hacks. If the env is trying to override the stack size // FIXME: Hacks on hacks. If the env is trying to override the stack size
// then *don't* set it explicitly. // then *don't* set it explicitly.

View File

@@ -91,11 +91,10 @@ pub struct TaskBuilder {
nocopy: Option<marker::NoCopy>, nocopy: Option<marker::NoCopy>,
} }
/** impl TaskBuilder {
* Generate the base configuration for spawning a task, off of which more /// Generate the base configuration for spawning a task, off of which more
* configuration methods can be chained. /// configuration methods can be chained.
*/ pub fn new() -> TaskBuilder {
pub fn task() -> TaskBuilder {
TaskBuilder { TaskBuilder {
opts: TaskOpts::new(), opts: TaskOpts::new(),
gen_body: None, gen_body: None,
@@ -103,7 +102,6 @@ pub fn task() -> TaskBuilder {
} }
} }
impl TaskBuilder {
/// Get a future representing the exit status of the task. /// Get a future representing the exit status of the task.
/// ///
/// Taking the value of the future will block until the child task /// Taking the value of the future will block until the child task
@@ -233,22 +231,17 @@ impl TaskOpts {
/// Sets up a new task with its own call stack and schedules it to run /// Sets up a new task with its own call stack and schedules it to run
/// the provided unique closure. /// the provided unique closure.
/// ///
/// This function is equivalent to `task().spawn(f)`. /// This function is equivalent to `TaskBuilder::new().spawn(f)`.
pub fn spawn(f: proc():Send) { pub fn spawn(f: proc():Send) {
let task = task(); TaskBuilder::new().spawn(f)
task.spawn(f)
} }
/// Execute a function in another task and return either the return value of
/// the function or an error if the task failed
///
/// This is equivalent to TaskBuilder::new().try
pub fn try<T:Send>(f: proc():Send -> T) -> Result<T, ~Any:Send> { pub fn try<T:Send>(f: proc():Send -> T) -> Result<T, ~Any:Send> {
/*! TaskBuilder::new().try(f)
* Execute a function in another task and return either the return value
* of the function or result::err.
*
* This is equivalent to task().try.
*/
let task = task();
task.try(f)
} }
@@ -298,7 +291,7 @@ fn test_unnamed_task() {
#[test] #[test]
fn test_owned_named_task() { fn test_owned_named_task() {
task().named("ada lovelace".to_owned()).spawn(proc() { TaskBuilder::new().named("ada lovelace".to_owned()).spawn(proc() {
with_task_name(|name| { with_task_name(|name| {
assert!(name.unwrap() == "ada lovelace"); assert!(name.unwrap() == "ada lovelace");
}) })
@@ -307,7 +300,7 @@ fn test_owned_named_task() {
#[test] #[test]
fn test_static_named_task() { fn test_static_named_task() {
task().named("ada lovelace").spawn(proc() { TaskBuilder::new().named("ada lovelace").spawn(proc() {
with_task_name(|name| { with_task_name(|name| {
assert!(name.unwrap() == "ada lovelace"); assert!(name.unwrap() == "ada lovelace");
}) })
@@ -316,7 +309,7 @@ fn test_static_named_task() {
#[test] #[test]
fn test_send_named_task() { fn test_send_named_task() {
task().named("ada lovelace".into_maybe_owned()).spawn(proc() { TaskBuilder::new().named("ada lovelace".into_maybe_owned()).spawn(proc() {
with_task_name(|name| { with_task_name(|name| {
assert!(name.unwrap() == "ada lovelace"); assert!(name.unwrap() == "ada lovelace");
}) })
@@ -326,7 +319,7 @@ fn test_send_named_task() {
#[test] #[test]
fn test_run_basic() { fn test_run_basic() {
let (tx, rx) = channel(); let (tx, rx) = channel();
task().spawn(proc() { TaskBuilder::new().spawn(proc() {
tx.send(()); tx.send(());
}); });
rx.recv(); rx.recv();
@@ -335,7 +328,7 @@ fn test_run_basic() {
#[test] #[test]
fn test_with_wrapper() { fn test_with_wrapper() {
let (tx, rx) = channel(); let (tx, rx) = channel();
task().with_wrapper(proc(body) { TaskBuilder::new().with_wrapper(proc(body) {
let result: proc():Send = proc() { let result: proc():Send = proc() {
body(); body();
tx.send(()); tx.send(());
@@ -347,12 +340,12 @@ fn test_with_wrapper() {
#[test] #[test]
fn test_future_result() { fn test_future_result() {
let mut builder = task(); let mut builder = TaskBuilder::new();
let result = builder.future_result(); let result = builder.future_result();
builder.spawn(proc() {}); builder.spawn(proc() {});
assert!(result.recv().is_ok()); assert!(result.recv().is_ok());
let mut builder = task(); let mut builder = TaskBuilder::new();
let result = builder.future_result(); let result = builder.future_result();
builder.spawn(proc() { builder.spawn(proc() {
fail!(); fail!();
@@ -362,7 +355,7 @@ fn test_future_result() {
#[test] #[should_fail] #[test] #[should_fail]
fn test_back_to_the_future_result() { fn test_back_to_the_future_result() {
let mut builder = task(); let mut builder = TaskBuilder::new();
builder.future_result(); builder.future_result();
builder.future_result(); builder.future_result();
} }
@@ -445,7 +438,7 @@ fn test_avoid_copying_the_body_spawn() {
#[test] #[test]
fn test_avoid_copying_the_body_task_spawn() { fn test_avoid_copying_the_body_task_spawn() {
avoid_copying_the_body(|f| { avoid_copying_the_body(|f| {
let builder = task(); let builder = TaskBuilder::new();
builder.spawn(proc() { builder.spawn(proc() {
f(); f();
}); });
@@ -471,11 +464,11 @@ fn test_child_doesnt_ref_parent() {
fn child_no(x: uint) -> proc():Send { fn child_no(x: uint) -> proc():Send {
return proc() { return proc() {
if x < generations { if x < generations {
task().spawn(child_no(x+1)); TaskBuilder::new().spawn(child_no(x+1));
} }
} }
} }
task().spawn(child_no(0)); TaskBuilder::new().spawn(child_no(0));
} }
#[test] #[test]

View File

@@ -445,6 +445,7 @@ impl Barrier {
mod tests { mod tests {
use std::comm::Empty; use std::comm::Empty;
use std::task; use std::task;
use std::task::TaskBuilder;
use arc::Arc; use arc::Arc;
use super::{Mutex, Barrier, RWLock}; use super::{Mutex, Barrier, RWLock};
@@ -614,7 +615,7 @@ 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 = task::task(); let mut builder = TaskBuilder::new();
children.push(builder.future_result()); children.push(builder.future_result());
builder.spawn(proc() { builder.spawn(proc() {
let lock = arc3.read(); let lock = arc3.read();

View File

@@ -60,7 +60,7 @@ use std::io;
use std::os; use std::os;
use std::str; use std::str;
use std::strbuf::StrBuf; use std::strbuf::StrBuf;
use std::task; use std::task::TaskBuilder;
// to be used by rustc to compile tests in libtest // to be used by rustc to compile tests in libtest
pub mod test { pub mod test {
@@ -961,7 +961,7 @@ pub fn run_test(force_ignore: bool,
let mut reader = ChanReader::new(rx); let mut reader = ChanReader::new(rx);
let stdout = ChanWriter::new(tx.clone()); let stdout = ChanWriter::new(tx.clone());
let stderr = ChanWriter::new(tx); let stderr = ChanWriter::new(tx);
let mut task = task::task().named(match desc.name { let mut task = TaskBuilder::new().named(match desc.name {
DynTestName(ref name) => name.clone().into_maybe_owned(), DynTestName(ref name) => name.clone().into_maybe_owned(),
StaticTestName(name) => name.into_maybe_owned(), StaticTestName(name) => name.into_maybe_owned(),
}); });

View File

@@ -23,6 +23,7 @@ extern crate time;
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) {}
@@ -62,7 +63,7 @@ fn run(args: &[~str]) {
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 = task::task(); let mut builder = TaskBuilder::new();
worker_results.push(builder.future_result()); worker_results.push(builder.future_result());
builder.spawn(proc() { builder.spawn(proc() {
for _ in range(0u, size / workers) { for _ in range(0u, size / workers) {

View File

@@ -18,6 +18,7 @@ extern crate time;
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) {}
@@ -56,7 +57,7 @@ fn run(args: &[~str]) {
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 = task::task(); let mut builder = TaskBuilder::new();
worker_results.push(builder.future_result()); worker_results.push(builder.future_result());
builder.spawn(proc() { builder.spawn(proc() {
for _ in range(0u, size / workers) { for _ in range(0u, size / workers) {
@@ -70,7 +71,7 @@ fn run(args: &[~str]) {
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 = task::task(); let mut builder = TaskBuilder::new();
worker_results.push(builder.future_result()); worker_results.push(builder.future_result());
builder.spawn(proc() { builder.spawn(proc() {
for _ in range(0u, size / workers) { for _ in range(0u, size / workers) {

View File

@@ -24,6 +24,7 @@ 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 {
@@ -77,7 +78,7 @@ 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 = task::task(); let mut builder = TaskBuilder::new();
results.push(builder.future_result()); results.push(builder.future_result());
builder.spawn(proc() { builder.spawn(proc() {
stress_task(i); stress_task(i);

View File

@@ -10,10 +10,10 @@
// error-pattern:task 'owned name' failed at 'test' // error-pattern:task 'owned name' failed at 'test'
use std::task; use std::task::TaskBuilder;
fn main() { fn main() {
task::task().named("owned name".to_owned()).try(proc() { TaskBuilder::new().named("owned name".to_owned()).try(proc() {
fail!("test"); fail!("test");
1 1
}).unwrap() }).unwrap()

View File

@@ -11,7 +11,7 @@
// error-pattern:task 'send name' failed at 'test' // error-pattern:task 'send name' failed at 'test'
fn main() { fn main() {
::std::task::task().named("send name".into_maybe_owned()).try(proc() { ::std::task::TaskBuilder::new().named("send name".into_maybe_owned()).try(proc() {
fail!("test"); fail!("test");
3 3
}).unwrap() }).unwrap()

View File

@@ -11,7 +11,7 @@
// error-pattern:task 'static name' failed at 'test' // error-pattern:task 'static name' failed at 'test'
fn main() { fn main() {
::std::task::task().named("static name").try(proc() { ::std::task::TaskBuilder::new().named("static name").try(proc() {
fail!("test"); fail!("test");
}).unwrap() }).unwrap()
} }

View File

@@ -8,12 +8,12 @@
// option. This file may not be copied, modified, or distributed // option. This file may not be copied, modified, or distributed
// except according to those terms. // except according to those terms.
use std::task; 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 = task::task(); let mut t = TaskBuilder::new();
t.opts.stack_size = Some(32 * 1024); t.opts.stack_size = Some(32 * 1024);
t.spawn(f); t.spawn(f);
} }

View File

@@ -13,9 +13,9 @@
// regression test for issue #10405, make sure we don't call println! too soon. // regression test for issue #10405, make sure we don't call println! too soon.
use std::task; use std::task::TaskBuilder;
pub fn main() { pub fn main() {
let mut t = task::task(); let mut t = TaskBuilder::new();
t.spawn(proc() ()); t.spawn(proc() ());
} }

View File

@@ -9,6 +9,7 @@
// 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(); }
@@ -16,7 +17,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 = task::task(); let mut builder = TaskBuilder::new();
let mut result = builder.future_result(); let mut result = builder.future_result();
builder.spawn(proc() { builder.spawn(proc() {
start(i) start(i)

View File

@@ -9,7 +9,7 @@
// except according to those terms. // except according to those terms.
use std::task; use std::task::TaskBuilder;
pub fn main() { println!("===== WITHOUT THREADS ====="); test00(); } pub fn main() { println!("===== WITHOUT THREADS ====="); test00(); }
@@ -38,7 +38,7 @@ 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 = task::task(); let mut builder = TaskBuilder::new();
results.push(builder.future_result()); results.push(builder.future_result());
builder.spawn({ builder.spawn({
let i = i; let i = i;

View File

@@ -9,7 +9,7 @@
// except according to those terms. // except according to those terms.
use std::task; use std::task::TaskBuilder;
pub fn main() { test00(); } pub fn main() { test00(); }
@@ -24,7 +24,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 = task::task(); let mut builder = TaskBuilder::new();
let result = builder.future_result(); let result = builder.future_result();
builder.spawn(proc() { builder.spawn(proc() {
test00_start(&tx, number_of_messages); test00_start(&tx, number_of_messages);

View File

@@ -22,7 +22,7 @@ extern crate rustuv;
use std::io::net::ip::{Ipv4Addr, SocketAddr}; use std::io::net::ip::{Ipv4Addr, SocketAddr};
use std::io::net::tcp::{TcpListener, TcpStream}; use std::io::net::tcp::{TcpListener, TcpStream};
use std::io::{Acceptor, Listener}; use std::io::{Acceptor, Listener};
use std::task; use std::task::TaskBuilder;
#[start] #[start]
fn start(argc: int, argv: **u8) -> int { fn start(argc: int, argv: **u8) -> int {
@@ -61,7 +61,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 = task::task(); let mut builder = TaskBuilder::new();
builder.opts.stack_size = Some(32 * 1024); builder.opts.stack_size = Some(32 * 1024);
builder.spawn(proc() { builder.spawn(proc() {
match TcpStream::connect(addr) { match TcpStream::connect(addr) {

View File

@@ -9,9 +9,10 @@
// 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 = task::task(); let mut builder = TaskBuilder::new();
let mut result = builder.future_result(); let mut result = builder.future_result();
builder.spawn(child); builder.spawn(child);
println!("1"); println!("1");

View File

@@ -9,9 +9,10 @@
// 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 = task::task(); let mut builder = TaskBuilder::new();
let mut result = builder.future_result(); let mut result = builder.future_result();
builder.spawn(child); builder.spawn(child);
println!("1"); println!("1");