# Background Runner
The purpose of this crate is to run a heavy task in the background multiple times without blocking the triggering thread. The motivating use case is to periodically write to a file from a game loop.
```rust
// Create a background runner and give it a task to run
});
// Some state to repeatedly pass to the runner.
// This can be anything that's Send + 'static
let state = 42;
loop {
// Light work goes here
// Trigger the runner if it's not busy currently
runner.update(&state);
}
```
The `update()` method is guaranteed to never block the calling thread. It will only trigger the runner's task if it's not currently running (i.e. busy with processing a previous run request).