aboutsummaryrefslogtreecommitdiff
path: root/src/test/run-pass/task-comm-13-thread.rs
diff options
context:
space:
mode:
authorMichael Bebenita <[email protected]>2010-08-24 21:06:56 -0700
committerMichael Bebenita <[email protected]>2010-08-24 21:07:14 -0700
commit64ff82ecf98ceb4725f0f51c73e23d1efc2160bc (patch)
tree6a6ae7452066716947c4d262eb72041a6a11cb95 /src/test/run-pass/task-comm-13-thread.rs
parentComment on env var required for std.dbg to do any logging. (diff)
downloadrust-64ff82ecf98ceb4725f0f51c73e23d1efc2160bc.tar.xz
rust-64ff82ecf98ceb4725f0f51c73e23d1efc2160bc.zip
Implemented an lock free queue based on this paper http://www.cs.rochester.edu/~scott/papers/1996_PODC_queues.pdf, the "lock free queue" we had before wasn't lock free at all.
Diffstat (limited to 'src/test/run-pass/task-comm-13-thread.rs')
-rw-r--r--src/test/run-pass/task-comm-13-thread.rs18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/test/run-pass/task-comm-13-thread.rs b/src/test/run-pass/task-comm-13-thread.rs
new file mode 100644
index 00000000..0dab20ed
--- /dev/null
+++ b/src/test/run-pass/task-comm-13-thread.rs
@@ -0,0 +1,18 @@
+use std;
+import std._task;
+
+io fn start(chan[int] c, int start, int number_of_messages) {
+ let int i = 0;
+ while (i < number_of_messages) {
+ c <| start + i;
+ i += 1;
+ }
+}
+
+fn main() -> () {
+ log "Check that we don't deadlock.";
+ let port[int] p = port();
+ let task a = spawn thread "start" start(chan(p), 0, 10);
+ join a;
+ log "Joined Task";
+} \ No newline at end of file