All Projects → amethyst → Shred

amethyst / Shred

Licence: other
Shared resource dispatcher

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Shred

Redrun
✨🐌 🐎✨ fastest npm scripts runner
Stars: ✭ 85 (-52.25%)
Mutual labels:  parallel, task-runner
Taskr
A fast, concurrency-focused task automation tool.
Stars: ✭ 2,421 (+1260.11%)
Mutual labels:  parallel, task-runner
Selenium Java Lean Test Achitecture
Ready to use Lean Test Automation Architecture using Java and Selenium WebDriver to speed up your test automation
Stars: ✭ 152 (-14.61%)
Mutual labels:  parallel
Pypyr
pypyr task-runner cli & api for automation pipelines. Automate anything by combining commands, different scripts in different languages & applications into one pipeline process.
Stars: ✭ 173 (-2.81%)
Mutual labels:  task-runner
Unity resources
A list of resources and tutorials for those doing programming in Unity.
Stars: ✭ 170 (-4.49%)
Mutual labels:  ecs
Foy
A simple, light-weight and modern task runner for general purpose.
Stars: ✭ 157 (-11.8%)
Mutual labels:  task-runner
Lightgbm
A fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.
Stars: ✭ 13,293 (+7367.98%)
Mutual labels:  parallel
Specs
Specs - Parallel ECS
Stars: ✭ 1,992 (+1019.1%)
Mutual labels:  ecs
Xygine
2D engine / framework built around SFML
Stars: ✭ 174 (-2.25%)
Mutual labels:  ecs
Metasync
Asynchronous Programming Library for JavaScript & Node.js
Stars: ✭ 164 (-7.87%)
Mutual labels:  parallel
Neural Fortran
A parallel neural net microframework
Stars: ✭ 173 (-2.81%)
Mutual labels:  parallel
Ipyparallel
IPython Parallel: Interactive Parallel Computing in Python
Stars: ✭ 2,127 (+1094.94%)
Mutual labels:  parallel
Svelto.tasks
Svelto Tasks - C# promises compliant multi-threaded tasks runner
Stars: ✭ 159 (-10.67%)
Mutual labels:  task-runner
Ecs Secrets
Runtime secrets management solution for ECS using Task IAM Roles
Stars: ✭ 171 (-3.93%)
Mutual labels:  ecs
Raytracer
Ray tracer with phong lighting, reflections, refractions, normal mapping, procedural textures, super sampling, and depth of field.
Stars: ✭ 155 (-12.92%)
Mutual labels:  parallel
Uecs
Ubpa Entity-Component-System (U ECS) in Unity3D-style
Stars: ✭ 174 (-2.25%)
Mutual labels:  ecs
Rack
Private PaaS built on native AWS services for maximum privacy and minimum upkeep
Stars: ✭ 1,836 (+931.46%)
Mutual labels:  ecs
Future.apply
🚀 R package: future.apply - Apply Function to Elements in Parallel using Futures
Stars: ✭ 159 (-10.67%)
Mutual labels:  parallel
Libgrape Lite
🍇 A C++ library for parallel graph processing 🍇
Stars: ✭ 169 (-5.06%)
Mutual labels:  parallel
Singularity
Singularity: Application containers for Linux
Stars: ✭ 2,290 (+1186.52%)
Mutual labels:  parallel

shred - Shared resource dispatcher

Build Status Crates.io MIT/Apache Docs.rs LoC

This library allows to dispatch systems, which can have interdependencies, shared and exclusive resource access, in parallel.

Usage

extern crate shred;

use shred::{DispatcherBuilder, Read, Resource, ResourceId, System, SystemData, World, Write};

#[derive(Debug, Default)]
struct ResA;

#[derive(Debug, Default)]
struct ResB;

#[derive(SystemData)] // Provided with `shred-derive` feature
struct Data<'a> {
    a: Read<'a, ResA>,
    b: Write<'a, ResB>,
}

struct EmptySystem;

impl<'a> System<'a> for EmptySystem {
    type SystemData = Data<'a>;

    fn run(&mut self, bundle: Data<'a>) {
        println!("{:?}", &*bundle.a);
        println!("{:?}", &*bundle.b);
    }
}

fn main() {
    let mut world = World::empty();
    let mut dispatcher = DispatcherBuilder::new()
        .with(EmptySystem, "empty", &[])
        .build();
    world.insert(ResA);
    world.insert(ResB);

    dispatcher.dispatch(&mut world);
}

Please see the benchmark for a bigger (and useful) example.

Required Rust version

1.38 stable

Features

  • lock-free
  • no channels or similar functionality used (-> less overhead)
  • allows both automated parallelization and fine-grained control

Contribution

Contribution is highly welcome! If you'd like another feature, just create an issue. You can also help out if you want to; just pick a "help wanted" issue. If you need any help, feel free to ask!

All contributions are assumed to be dual-licensed under MIT/Apache-2.

License

shred is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].