about summary refs log tree commit diff
path: root/src/libstd/task
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2013-09-20 18:49:31 -0700
committerBrian Anderson <banderson@mozilla.com>2013-09-25 20:05:56 -0700
commitd209717ddd260a5b0afd0dd07cddde903281f353 (patch)
tree6c04e6cd4444c87239db877c2a4ca4ba3c05d0a2 /src/libstd/task
parent00db6f6e7be04882b67660adcf04811511d4b8c2 (diff)
downloadrust-d209717ddd260a5b0afd0dd07cddde903281f353.tar.gz
rust-d209717ddd260a5b0afd0dd07cddde903281f353.zip
std::rt: Implement task yielding. Fix a starvation problem
Diffstat (limited to 'src/libstd/task')
-rw-r--r--src/libstd/task/mod.rs5
1 files changed, 1 insertions, 4 deletions
diff --git a/src/libstd/task/mod.rs b/src/libstd/task/mod.rs
index 1dbc644c8e5..e6f6536956c 100644
--- a/src/libstd/task/mod.rs
+++ b/src/libstd/task/mod.rs
@@ -542,12 +542,9 @@ pub fn deschedule() {
     use rt::local::Local;
     use rt::sched::Scheduler;
 
-    // FIXME #6842: What does yield really mean in newsched?
     // FIXME(#7544): Optimize this, since we know we won't block.
     let sched: ~Scheduler = Local::take();
-    do sched.deschedule_running_task_and_then |sched, task| {
-        sched.enqueue_blocked_task(task);
-    }
+    sched.yield_now();
 }
 
 pub fn failing() -> bool {