Skip to content

Commit bd81ada

Browse files
committed
Add task::send and task::recv
1 parent 73fed01 commit bd81ada

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/lib/task.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,14 @@ fn clone_chan[T](chan[T] c) -> chan[T] {
5252
ret unsafe::reinterpret_cast(cloned);
5353
}
5454

55+
fn send[T](chan[T] c, &T v) {
56+
c <| v;
57+
}
58+
59+
fn recv[T](port[T] p) -> T {
60+
auto v; p |> v; v
61+
}
62+
5563
// Spawn a task and immediately return a channel for communicating to it
5664
fn worker[T](fn(port[T]) f) -> rec(task task, chan[T] chan) {
5765
// FIXME: This is frighteningly unsafe and only works for

src/test/stdtest/task.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,14 @@ fn test_join() {
3333
assert task::join(failtask) == task::tr_failure;
3434
}
3535

36+
#[test]
37+
fn test_send_recv() {
38+
auto p = port[int]();
39+
auto c = chan(p);
40+
task::send(c, 10);
41+
assert task::recv(p) == 10;
42+
}
43+
3644
#[test]
3745
fn test_worker() {
3846
task::worker(fn(port[int] p) {

0 commit comments

Comments
 (0)