CurrentScheduler,
/// Run task on a specific scheduler
ExistingScheduler(Scheduler),
- /**
- * Tasks are scheduled on the main OS thread
- *
- * The main OS thread is the thread used to launch the runtime which,
- * in most cases, is the process's initial thread as created by the OS.
- */
- PlatformThread,
/// All tasks run in the same OS thread
SingleThreaded,
}
}
}
-#[test]
-fn test_platform_thread() {
- let (po, ch) = stream();
- let mut builder = task();
- builder.sched_mode(PlatformThread);
- do builder.spawn {
- ch.send(());
- }
- po.recv();
-}
-
#[test]
#[ignore(cfg(windows))]
#[should_fail]
use task::local_data_priv::{local_get, local_set, OldHandle};
use task::rt::rust_task;
use task::rt;
-use task::{Failure, PlatformThread, SchedOpts, SingleThreaded};
+use task::{Failure, SchedOpts, SingleThreaded};
use task::{Success, TaskOpts, TaskResult};
use task::{ExistingScheduler, SchedulerHandle};
use task::unkillable;
let num_threads = match opts.mode {
DefaultScheduler
| CurrentScheduler
- | ExistingScheduler(*)
- | PlatformThread => 0u, /* Won't be used */
+ | ExistingScheduler(*) => 0u, /* Won't be used */
SingleThreaded => 1u,
};
let sched_id = match opts.mode {
CurrentScheduler => rt::rust_get_sched_id(),
ExistingScheduler(SchedulerHandle(id)) => id,
- PlatformThread => rt::rust_osmain_sched_id(),
_ => rt::rust_new_sched(num_threads)
};
rt::rust_new_task_in_sched(sched_id)
+++ /dev/null
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// Jump back and forth between the OS main thread and a new scheduler.
-// The OS main scheduler should continue to be available and not terminate
-// while it is not in use.
-
-use std::task;
-
-pub fn main() {
- run(100);
-}
-
-fn run(i: int) {
-
- info!(i);
-
- if i == 0 {
- return;
- }
-
- let mut builder = task::task();
- builder.sched_mode(task::PlatformThread);
- builder.unlinked();
- do builder.spawn {
- task::yield();
- let mut builder = task::task();
- builder.sched_mode(task::SingleThreaded);
- builder.unlinked();
- do builder.spawn {
- task::yield();
- run(i - 1);
- task::yield();
- }
- task::yield();
- }
-}