about summary refs log tree commit diff
path: root/src/rt/test/rust_test_runtime.cpp
diff options
context:
space:
mode:
authorEric Holk <eholk@mozilla.com>2011-07-23 19:03:02 -0700
committerEric Holk <eholk@mozilla.com>2011-07-28 10:47:28 -0700
commit62bc6b51136760b1d4f4b691aaa089bdb9bf0af5 (patch)
treebd4787e8bd4eed7b3ca7b3d99ece0fc75ae444fa /src/rt/test/rust_test_runtime.cpp
parentb51f5c395cc3458e428159b908ca95b1777e66e2 (diff)
downloadrust-62bc6b51136760b1d4f4b691aaa089bdb9bf0af5.tar.gz
rust-62bc6b51136760b1d4f4b691aaa089bdb9bf0af5.zip
Per-thread scheduling. Closes #682.
Tasks are spawned on a random thread. Currently they stay there, but
we should add task migration and load balancing in the future. This
should drammatically improve our task performance benchmarks.
Diffstat (limited to 'src/rt/test/rust_test_runtime.cpp')
-rw-r--r--src/rt/test/rust_test_runtime.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/rt/test/rust_test_runtime.cpp b/src/rt/test/rust_test_runtime.cpp
index f9a99d9acb1..1e7c10944a7 100644
--- a/src/rt/test/rust_test_runtime.cpp
+++ b/src/rt/test/rust_test_runtime.cpp
@@ -11,17 +11,16 @@ rust_test_runtime::~rust_test_runtime() {
 
 void
 rust_domain_test::worker::run() {
-    rust_scheduler *handle = kernel->get_scheduler();
     for (int i = 0; i < TASKS; i++) {
-        handle->create_task(NULL, "child");
+        kernel->create_task(NULL, "child");
     }
-    sync::sleep(rand(&handle->rctx) % 1000);
+    //sync::sleep(rand(&handle->rctx) % 1000);
 }
 
 bool
 rust_domain_test::run() {
     rust_srv srv;
-    rust_kernel kernel(&srv);
+    rust_kernel kernel(&srv, 1);
 
     array_list<worker *> workers;
     for (int i = 0; i < DOMAINS; i++) {
@@ -47,13 +46,13 @@ void
 rust_task_test::worker::run() {
     rust_task *root_task = kernel->create_task(NULL, "main");
     root_task->start((uintptr_t)&task_entry, (uintptr_t)NULL);
-    root_task->sched->start_main_loop(0);
+    root_task->sched->start_main_loop();
 }
 
 bool
 rust_task_test::run() {
     rust_srv srv;
-    rust_kernel kernel(&srv);
+    rust_kernel kernel(&srv, 1);
 
     array_list<worker *> workers;
     for (int i = 0; i < DOMAINS; i++) {
@@ -62,6 +61,6 @@ rust_task_test::run() {
         worker->start();
     }
 
-    sync::sleep(rand(&kernel.sched->rctx) % 1000);
+    //sync::sleep(rand(&kernel.sched->rctx) % 1000);
     return true;
 }