## ODEM-rs Sync
`odem-rs-sync` provides synchronization primitives and communication structures for agent-job interactions in
ODEM-rs simulations.
### Features
- Internal cooperative concurrency by extending simulation contexts with forking.
- MPMC channels to connect agents.
- Control expressions allow modeling state-events in addition to the standard time-events provided by the scheduler.
- A GPSS-inspired facility to model exclusive resources.
Dynamically sized backing stores for the channels require the `alloc`-feature. Channels themselves can either be created
on the heap using a free `channel`-function like in Rust's standard library which requires `alloc` as well, or pinned on
the stack for the `no_std` solution. Everything else is `no_std`.
### Installation
This crate is meant as a dependency to the `odem-rs` entry crate, but it is possible to use it in combination
with the simulator core defined in the `odem-rs-code` crate. To install, add the following line to your `Cargo.toml`.
```toml
[dependencies]
odem-rs-sync = "*"
```
### License
Licensed under **MIT**. See [LICENSE] for details.
[LICENSE]: https://gitlab.informatik.hu-berlin.de/weber/odem-rs/blob/main/LICENSE