bus
rsevents
Our great sponsors
bus | rsevents | |
---|---|---|
2 | 4 | |
750 | 18 | |
- | - | |
6.1 | 10.0 | |
8 months ago | over 1 year ago | |
Rust | Rust | |
Apache License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
bus
- pub/sub Event bus in rust
-
What is an idiomatic rust equivalent of C# events?
I would say channels. In this case, a single producer, multiple consumer (spmc) broadcast channel, like bus. I can't vouch for this library, but it seems to do what you're looking for
rsevents
-
Learning Async Rust with Too Many Web Servers
Thanks. Perhaps I did go overboard with that disclaimer.. probably because I myself made the mistake of initially using [0] the oh-so-convenient tokio::io::copy() instead of writing my own copy method that would drop the other half of the connection when one side was closed.
The copy_with_abort() routine is still taking the easy way out in this not-optimized-for-heavy-production-use sample because it uses a broadcast channel per connection to reactively signal that the other half of the connection should be closed (rather than timing out every x ms to see if an abort flag has been set). In the real world, I'd probably replace the join! macro with a manual event loop to be able to do the same but without creating a broadcast channel per-connection.
(I maintain an extremely lightweight "awaitable bools" library for rust [1] that is perfect for this kind of thing (roughly equivalent to a "bounded broadcast_channel<()> of queue length 1, but each "channel" is only a single (optionally stack-allocated) byte) — but it's for event loops in synchronous code and not async executor compatible.)
[0]: https://github.com/mqudsi/tcpproxy/commit/0164ef836a49f2f738...
[1]: https://github.com/neosmart/rsevents
-
Implementing truly safe semaphores in rust, and the cost we pay for safety
The AutoResetEvent takes care of that, doing Acquire and Release as needed. Source code here if you’re interested, not too long: https://github.com/neosmart/rsevents/blob/master/src/lib.rs
-
Finding the “Second Bug” in Glibc’s Condition Variable
I wrote my own FOSS signals/events library in C++ [0] and in rust [1] (atop of parking lot as a futex shoe-in) and I disagree. This has nothing to do with the language and everything to do with the semantics of the locks. Writing concurrency primitives is HARD and the more functionality your API exposes, the more room there is for nuanced bugs in how everything interplays with everything else.
[0]: https://github.com/neosmart/pevents
[1]: https://github.com/neosmart/rsevents
-
rsevents-extra 0.2.0 released: useful synchronization primitives for multithreaded processing
rsevents-extra types are built on top of the low-level synchronization types from the rsevents crate, which are fast and tiny (one-byte) Send + Sync synchronization types for signalling one or more waiting threads (à la WIN32 events), doing everything but putting a thread to sleep in userland.
What are some alternatives?
docker-compose-wait - A simple script to wait for other docker images to be started while using docker-compose (or Kubernetes or docker stack or whatever)
libpthread
left-right - A lock-free, read-optimized, concurrency primitive.
pevents - Implementation of Win32 events for *nix platforms, built on top of pthreads.
crossbeam - Tools for concurrent programming in Rust
nsync - nsync is a C library that exports various synchronization primitives, such as mutexes
mtc - A CLI time management app with the ability to synchronize todos, tasks and events via a server using a SSH connection.
triple-buffer - Implementation of triple buffering in Rust
trn - Time Ranges
tcpproxy - A cross-platform TCP proxy in tokio and rust
Googletrans - G文⚡️: Concurrency-safe, Free and Unlimited google translate api for Golang. 🔥免费、无限、并发安全的谷歌翻译包
glibc - Unofficial mirror of sourceware glibc repository. Updated daily.