Skip to content

A small runtime that all the boilerplate when using threads.

License

Notifications You must be signed in to change notification settings

maxbailly/employees

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

employees

A small and lightweight crate to hide most of the burden of setting up threads.

Philosophy

This crate sees threads as unique entities called workers which live as long as the program lives.

Usage

Here's a small example that spawns a worker that prints "Hello, World!" every 100ms for 1 second.

struct WorkerThatPrints;
impl Worker for WorkerThatPrints {
    fn on_update(&mut self) -> ControlFlow {
        println!("Hello, World!");
        std::thread::sleep(Duration::from_millis(100));
        ControlFlow::Continue
    }
}

let mut runtime = Runtime::new();

runtime.launch(WorkerThatPrints);
std::thread::sleep(Duration::from_secs(1));

See the full documentation for more in depth details.

Should I use employees?

Concurrency

employees is built with CPU-bound concurrency in mind.

"But wait, arent't async runtimes built for that purpose?" you might ask, and you'll be 100% right.

But async has drawbacks which employees hasn't:

That said, there are usecases where async runtime will be better such as I/O bound tasks (web servers, ect.) or concurrent tasks on single threaded platforms.

Paralellism

Again, employees is built with concurrency in mind. While it is possible to build a work stealing thread pool from employees to parallelize some kind of computation, other crates such as rayon add a ton of utilities speficically made for that purpose which is why, for most paralellism usecases, rayon-like crates will be a better choice.

ECS

employees is not an ECS in any shape or form. While it might be possible to build one from this crate, users are better off using ECS crates.

License

Licensed under the terms of MIT license. See LICENSE for details.

About

A small runtime that all the boilerplate when using threads.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages