diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-07-23 22:41:28 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-07-24 16:18:31 -0700 |
| commit | bd81adabffd01dd3c2c25902314d5e8173835dfa (patch) | |
| tree | f766f1d2100e5d5450f127401ec064e820f3c679 | |
| parent | 73fed0110823fad26900626bd043b4647e8b3fb7 (diff) | |
| download | rust-bd81adabffd01dd3c2c25902314d5e8173835dfa.tar.gz rust-bd81adabffd01dd3c2c25902314d5e8173835dfa.zip | |
Add task::send and task::recv
| -rw-r--r-- | src/lib/task.rs | 8 | ||||
| -rw-r--r-- | src/test/stdtest/task.rs | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/lib/task.rs b/src/lib/task.rs index dc238ffe7b3..acee188a7b3 100644 --- a/src/lib/task.rs +++ b/src/lib/task.rs @@ -52,6 +52,14 @@ fn clone_chan[T](chan[T] c) -> chan[T] { ret unsafe::reinterpret_cast(cloned); } +fn send[T](chan[T] c, &T v) { + c <| v; +} + +fn recv[T](port[T] p) -> T { + auto v; p |> v; v +} + // Spawn a task and immediately return a channel for communicating to it fn worker[T](fn(port[T]) f) -> rec(task task, chan[T] chan) { // FIXME: This is frighteningly unsafe and only works for diff --git a/src/test/stdtest/task.rs b/src/test/stdtest/task.rs index cc7a299194c..62ed8b9638a 100644 --- a/src/test/stdtest/task.rs +++ b/src/test/stdtest/task.rs @@ -34,6 +34,14 @@ fn test_join() { } #[test] +fn test_send_recv() { + auto p = port[int](); + auto c = chan(p); + task::send(c, 10); + assert task::recv(p) == 10; +} + +#[test] fn test_worker() { task::worker(fn(port[int] p) { auto x; p |> x; |
