All Projects → jonhoo → Bus

jonhoo / Bus

Licence: other
Efficient, lock-free, bounded Rust broadcast channel

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Bus

sync-mht
Synchronize directory hierarchies using Hash-Tree's
Stars: ✭ 21 (-94.29%)
Mutual labels:  synchronization, communication
Rsm
distributed computing toolkit in rust
Stars: ✭ 17 (-95.38%)
Mutual labels:  lock-free, synchronization
Joynr
A transport protocol agnostic (MQTT, HTTP, WebSockets etc.) Franca IDL based communication framework supporting multiple communication paradigms (RPC, Pub-Sub, broadcast etc.)
Stars: ✭ 124 (-66.3%)
Mutual labels:  broadcast, communication
Crossbeam
Tools for concurrent programming in Rust
Stars: ✭ 4,180 (+1035.87%)
Mutual labels:  lock-free, synchronization
Spscqueue
A bounded single-producer single-consumer wait-free and lock-free queue written in C++11
Stars: ✭ 307 (-16.58%)
Mutual labels:  lock-free
Svxlink
Advanced repeater system software with EchoLink support for Linux including a GUI, Qtel - the Qt EchoLink client
Stars: ✭ 278 (-24.46%)
Mutual labels:  communication
Eiskaltdcpp
File sharing program using DC and ADC protocols
Stars: ✭ 277 (-24.73%)
Mutual labels:  communication
Chronos
Chronos - A static race detector for the go language
Stars: ✭ 272 (-26.09%)
Mutual labels:  synchronization
Yarp
YARP - Yet Another Robot Platform
Stars: ✭ 358 (-2.72%)
Mutual labels:  communication
Pyinstalive
Python script to download Instagram livestreams and replays.
Stars: ✭ 336 (-8.7%)
Mutual labels:  broadcast
Concurrencyfreaks
Stars: ✭ 299 (-18.75%)
Mutual labels:  lock-free
Talk Android
📱😀 Video & audio calls through Nextcloud on Android
Stars: ✭ 282 (-23.37%)
Mutual labels:  communication
Mlib
Library of generic and type safe containers in pure C language (C99 or C11) for a wide collection of container (comparable to the C++ STL).
Stars: ✭ 321 (-12.77%)
Mutual labels:  lock-free
Object threadsafe
We make any object thread-safe and std::shared_mutex 10 times faster to achieve the speed of lock-free algorithms on >85% reads
Stars: ✭ 280 (-23.91%)
Mutual labels:  lock-free
Qtox
qTox is a chat, voice, video, and file transfer IM client using the encrypted peer-to-peer Tox protocol.
Stars: ✭ 3,843 (+944.29%)
Mutual labels:  communication
Venom
a modern Tox client for the GNU/Linux desktop
Stars: ✭ 276 (-25%)
Mutual labels:  communication
Callbackurlkit
Implementation of x-callback-url (Inter app communication) in swift
Stars: ✭ 299 (-18.75%)
Mutual labels:  communication
Grouparoo
🦘 The Grouparoo Monorepo - open source customer data sync framework
Stars: ✭ 334 (-9.24%)
Mutual labels:  communication
Cserialport
基于C++的轻量级开源跨平台串口类库Lightweight cross-platform serial port library based on C++
Stars: ✭ 296 (-19.57%)
Mutual labels:  communication
Drwmutex
Distributed RWMutex in Go
Stars: ✭ 308 (-16.3%)
Mutual labels:  synchronization

bus

Crates.io Documentation Build Status Codecov

Bus provides a lock-free, bounded, single-producer, multi-consumer, broadcast channel.

NOTE: bus sometimes busy-waits in the current implementation, which may cause increased CPU usage — see #23.

It uses a circular buffer and atomic instructions to implement a lock-free single-producer, multi-consumer channel. The interface is similar to that of the std::sync::mpsc channels, except that multiple consumers (readers of the channel) can be produced, whereas only a single sender can exist. Furthermore, in contrast to most multi-consumer FIFO queues, bus is broadcast; every send goes to every consumer.

I haven't seen this particular implementation in literature (some extra bookkeeping is necessary to allow multiple consumers), but a lot of related reading can be found in Ross Bencina's blog post "Some notes on lock-free and wait-free algorithms".

See the documentation for usage examples.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

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