about summary refs log tree commit diff
path: root/src/rt/rust_scheduler.cpp
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2011-07-29 23:02:51 -0700
committerBrian Anderson <banderson@mozilla.com>2011-07-29 23:02:51 -0700
commitd552a0b95985f91278b2f3c05ee2c4b558a0a417 (patch)
tree68ae8dc7103e27ac7cd9ea035cfeb54294ffabb5 /src/rt/rust_scheduler.cpp
parentec46f07e6e41d91b86f5fee8cd0925934a0f7b60 (diff)
downloadrust-d552a0b95985f91278b2f3c05ee2c4b558a0a417.tar.gz
rust-d552a0b95985f91278b2f3c05ee2c4b558a0a417.zip
Minimize scheduler locking on task creation
This takes my CPU utilization on task-perf-spawnalot from 35% to 55%
Diffstat (limited to 'src/rt/rust_scheduler.cpp')
-rw-r--r--src/rt/rust_scheduler.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/rt/rust_scheduler.cpp b/src/rt/rust_scheduler.cpp
index 6f91d17f9b8..47011e5a78d 100644
--- a/src/rt/rust_scheduler.cpp
+++ b/src/rt/rust_scheduler.cpp
@@ -272,7 +272,9 @@ rust_scheduler::create_task(rust_task *spawner, const char *name) {
         task->pin(spawner->pinned_on);
         task->on_wakeup(spawner->_on_wakeup);
     }
+    lock.lock();
     newborn_tasks.append(task);
+    lock.unlock();
 
     sync::increment(kernel->live_tasks);