amethyst / Shred
Licence: other
Shared resource dispatcher
Stars: ✭ 178
Programming Languages
rust
11053 projects
Labels
Projects that are alternatives of or similar to Shred
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
Metasync
Asynchronous Programming Library for JavaScript & Node.js
Stars: ✭ 164 (-7.87%)
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
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
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].