aboutsummaryrefslogtreecommitdiff
path: root/book/en/src/by-example/message_passing.md
blob: ac16097160ffe4debb116a3439862c4cbe388f99 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# Message passing & capacity

Software tasks support message passing, this means that software tasks can be spawned
with an argument: `foo::spawn(1)` which will run the task `foo` with the argument `1`.

Capacity sets the size of the spawn queue for the task. If it is not specified, the capacity defaults to 1.

In the example below, the capacity of task `foo` is `3`, allowing three simultaneous
pending spawns of `foo`. Exceeding this capacity is an `Error`.

The number of arguments to a task is not limited:

``` rust,noplayground
{{#include ../../../../examples/message_passing.rs}}
```

``` console
$ cargo xtask qemu --verbose --example message_passing
{{#include ../../../../ci/expected/message_passing.run}}
```