mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-26 22:05:14 +00:00
libcore: add a task::set_sched_mode fn
This commit is contained in:
parent
75db80e233
commit
1972ae23e5
@ -163,15 +163,11 @@ mod global_env {
|
||||
let builder_fn = || {
|
||||
let builder = task::builder();
|
||||
task::unsupervise(builder);
|
||||
task::set_opts(builder, {
|
||||
sched: some({
|
||||
mode: task::single_threaded,
|
||||
// FIXME (#2621): This would be a good place to use a
|
||||
// very small foreign stack
|
||||
foreign_stack_size: none
|
||||
})
|
||||
with task::get_opts(builder)
|
||||
});
|
||||
|
||||
// FIXME (#2621): This would be a good place to use a very small
|
||||
// foreign stack
|
||||
task::set_sched_mode(builder, task::single_threaded);
|
||||
|
||||
builder
|
||||
};
|
||||
unsafe {
|
||||
|
@ -38,6 +38,7 @@ export builder;
|
||||
export default_task_opts;
|
||||
export get_opts;
|
||||
export set_opts;
|
||||
export set_sched_mode;
|
||||
export add_wrapper;
|
||||
export run;
|
||||
|
||||
@ -237,6 +238,16 @@ fn set_opts(builder: builder, opts: task_opts) {
|
||||
builder.opts = opts;
|
||||
}
|
||||
|
||||
fn set_sched_mode(builder: builder, mode: sched_mode) {
|
||||
set_opts(builder, {
|
||||
sched: some({
|
||||
mode: mode,
|
||||
foreign_stack_size: none
|
||||
})
|
||||
with get_opts(builder)
|
||||
});
|
||||
}
|
||||
|
||||
fn add_wrapper(builder: builder, gen_body: fn@(+fn~()) -> fn~()) {
|
||||
/*!
|
||||
* Add a wrapper to the body of the spawned task.
|
||||
@ -467,13 +478,7 @@ fn spawn_sched(mode: sched_mode, +f: fn~()) {
|
||||
*/
|
||||
|
||||
let mut builder = builder();
|
||||
set_opts(builder, {
|
||||
sched: some({
|
||||
mode: mode,
|
||||
foreign_stack_size: none
|
||||
})
|
||||
with get_opts(builder)
|
||||
});
|
||||
set_sched_mode(builder, mode);
|
||||
run(builder, f);
|
||||
}
|
||||
|
||||
@ -1207,14 +1212,7 @@ fn test_avoid_copying_the_body_unsupervise() {
|
||||
#[test]
|
||||
fn test_osmain() {
|
||||
let buildr = builder();
|
||||
let opts = {
|
||||
sched: some({
|
||||
mode: osmain,
|
||||
foreign_stack_size: none
|
||||
})
|
||||
with get_opts(buildr)
|
||||
};
|
||||
set_opts(buildr, opts);
|
||||
set_sched_mode(buildr, mode);
|
||||
|
||||
let po = comm::port();
|
||||
let ch = comm::chan(po);
|
||||
|
@ -40,14 +40,7 @@ fn get_monitor_task_gl() -> iotask unsafe {
|
||||
|
||||
let builder_fn = || {
|
||||
let builder = task::builder();
|
||||
task::set_opts(builder, {
|
||||
supervise: false,
|
||||
sched: some({
|
||||
mode: task::single_threaded,
|
||||
foreign_stack_size: none
|
||||
})
|
||||
with task::get_opts(builder)
|
||||
});
|
||||
task::set_sched_mode(builder, task::single_threaded);
|
||||
builder
|
||||
};
|
||||
|
||||
|
@ -25,19 +25,11 @@ enum iotask {
|
||||
|
||||
fn spawn_iotask(-builder: task::builder) -> iotask {
|
||||
|
||||
import task::{set_opts, get_opts, single_threaded, run};
|
||||
|
||||
set_opts(builder, {
|
||||
sched: some({
|
||||
mode: single_threaded,
|
||||
foreign_stack_size: none
|
||||
})
|
||||
with get_opts(builder)
|
||||
});
|
||||
task::set_sched_mode(builder, task::single_threaded);
|
||||
|
||||
do listen |iotask_ch| {
|
||||
|
||||
do run(copy(builder)) {
|
||||
do task::run(copy(builder)) {
|
||||
#debug("entering libuv task");
|
||||
run_loop(iotask_ch);
|
||||
#debug("libuv task exiting");
|
||||
|
Loading…
Reference in New Issue
Block a user