diff options
| author | Graydon Hoare <[email protected]> | 2010-06-23 21:03:09 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-06-23 21:03:09 -0700 |
| commit | d6b7c96c3eb29b9244ece0c046d3f372ff432d04 (patch) | |
| tree | b425187e232966063ffc2f0d14c04a55d8f004ef /src/test/run-pass/preempt.rs | |
| parent | Initial git commit. (diff) | |
| download | rust-d6b7c96c3eb29b9244ece0c046d3f372ff432d04.tar.xz rust-d6b7c96c3eb29b9244ece0c046d3f372ff432d04.zip | |
Populate tree.
Diffstat (limited to 'src/test/run-pass/preempt.rs')
| -rw-r--r-- | src/test/run-pass/preempt.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/test/run-pass/preempt.rs b/src/test/run-pass/preempt.rs new file mode 100644 index 00000000..00fc29ca --- /dev/null +++ b/src/test/run-pass/preempt.rs @@ -0,0 +1,26 @@ +// This checks that preemption works. + +io fn starve_main(chan[int] alive) { + log "signalling main"; + alive <| 1; + log "starving main"; + let int i = 0; + while (true) { + i += 1; + } +} + +io fn main() { + let port[int] alive = port(); + log "main started"; + let task s = spawn starve_main(chan(alive)); + let int i; + log "main waiting for alive signal"; + i <- alive; + log "main got alive signal"; + while (i < 1000) { + log "main iterated"; + i += 1; + } + log "main completed"; +}
\ No newline at end of file |