All Projects → zesterer → Flume

zesterer / Flume

Licence: other
A safe and fast multi-producer, multi-consumer channel.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Flume

Javamtp
《Java多线程编程实战指南(设计模式篇)》源码
Stars: ✭ 575 (-31.06%)
Mutual labels:  concurrency
Kovenant
Kovenant. Promises for Kotlin.
Stars: ✭ 657 (-21.22%)
Mutual labels:  concurrency
Pget
The fastest file download client
Stars: ✭ 724 (-13.19%)
Mutual labels:  concurrency
Funfix
Functional Programming Library for JavaScript, TypeScript and Flow ✨⚡️
Stars: ✭ 596 (-28.54%)
Mutual labels:  concurrency
P Map
Map over promises concurrently
Stars: ✭ 639 (-23.38%)
Mutual labels:  concurrency
Translations
🐼 Chinese translations for classic IT resources
Stars: ✭ 6,074 (+628.3%)
Mutual labels:  concurrency
Coyote
Coyote is tool designed to help ensure that your C# code is free of annoying concurrency bugs.
Stars: ✭ 556 (-33.33%)
Mutual labels:  concurrency
Go Concurrency Patterns
Concurrency patterns in Go
Stars: ✭ 724 (-13.19%)
Mutual labels:  concurrency
Continuable
C++14 asynchronous allocation aware futures (supporting then, exception handling, coroutines and connections)
Stars: ✭ 655 (-21.46%)
Mutual labels:  concurrency
Example.v2
An example project for book 'Go Programming & Concurrency in Practice, 2nd edition' (《Go并发编程实战》第2版).
Stars: ✭ 722 (-13.43%)
Mutual labels:  concurrency
Java Concurrency Progamming Tutorial
BAT华为大厂一线工程师四年磨一剑精心编排 Java 高并发编程案例代码 & 教程 & 面试题集锦。详细文档讲解请阅读本人的知识库仓:https://github.com/Wasabi1234/Java-Interview-Tutorial
Stars: ✭ 606 (-27.34%)
Mutual labels:  concurrency
Cortex M Rtic
Real-Time Interrupt-driven Concurrency (RTIC) framework for ARM Cortex-M microcontrollers
Stars: ✭ 623 (-25.3%)
Mutual labels:  concurrency
Cr
Runs your tasks at maximum concurrency
Stars: ✭ 681 (-18.35%)
Mutual labels:  concurrency
Ocaml Multicore
Multicore OCaml
Stars: ✭ 591 (-29.14%)
Mutual labels:  concurrency
Actix
Actor framework for Rust.
Stars: ✭ 6,764 (+711.03%)
Mutual labels:  concurrency
Concurrent Programming
🌵《实战java高并发程序设计》源码整理
Stars: ✭ 562 (-32.61%)
Mutual labels:  concurrency
System design
Preparation links and resources for system design questions
Stars: ✭ 7,170 (+759.71%)
Mutual labels:  concurrency
Overdrive
⚡️ Fast async task based Swift framework with focus on type safety, concurrency and multi threading
Stars: ✭ 823 (-1.32%)
Mutual labels:  concurrency
Fucking Java Concurrency
🎏 Simple show cases of java concurrency problems, seeing 🙈 is believing 🐵
Stars: ✭ 779 (-6.59%)
Mutual labels:  concurrency
Arq
Fast job queuing and RPC in python with asyncio and redis.
Stars: ✭ 695 (-16.67%)
Mutual labels:  concurrency

Flume

A blazingly fast multi-producer, multi-consumer channel.

Cargo Documentation License actions-badge

let (tx, rx) = flume::unbounded();

thread::spawn(move || (0..10).for_each(|i| { tx.send(i); }));

let received = rx
    .iter()
    .sum();

assert_eq!((0..10).sum(), received);

Why Flume?

  • Featureful: Unbounded, bounded and rendezvous queues
  • Fast: Always faster than std::sync::mpsc and sometimes crossbeam-channel
  • Safe: No unsafe code anywhere in the codebase!
  • Flexible: Sender and Receiver both implement Send + Sync + Clone
  • Familiar: Drop-in replacement for std::sync::mpsc
  • Capable: Additional features like MPMC support and send timeouts/deadlines
  • Simple: Few dependencies, minimal codebase, fast to compile
  • Asynchronous: async support, including mix 'n match with sync code
  • Ergonomic: Powerful select-like interface

Usage

To use Flume, place the following line under the [dependencies] section in your Cargo.toml:

flume = "x.y"

Benchmarks

Although Flume has its own extensive benchmarks, don't take it from here that Flume is quick. The following graph is from the crossbeam-channel benchmark suite.

Tests were performed on an AMD Ryzen 7 3700x with 8/16 cores running Linux kernel 5.11.2 with the bfq scheduler.

Flume benchmarks (crossbeam benchmark suite)

License

Flume is licensed under either of:

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].