crossbeam
crossbeam copied to clipboard
Tools for concurrent programming in Rust
`SegQueue` is not completely lock-free. It effectively contains a spin-lock inside. While this shouldn't affect performance in most cases, it can cause pathological behavior with priority inversion (see [this post](https://matklad.github.io/2020/01/02/spinlocks-considered-harmful.html)...
crossbeam-channel appears to use pure spinlocks (which never block in the kernel), from userspace, which is a bad idea. Looking at the behavior with `strace`, it appears to be `sched_yield`ing...
Apparently, crossbeam has MSRV `1.36`, which [includes `AtomicU8`](https://doc.rust-lang.org/1.36.0/std/sync/atomic/struct.AtomicU8.html). Hence the following comment is outdated: https://github.com/crossbeam-rs/crossbeam/blob/2653a6cfe7f8756d27f53d51cc84fcabf5d1d549/crossbeam-utils/src/atomic/atomic_cell.rs#L796-L801 Considering that this comment legitimizes code that is officially UB, I propose that this should...
is the scope's 'env lifetime bound with closure's lifetime?
Hi, I think I'd be nice if there was a bit of an example on how to use `crossbeam-deque`. I know there is this page https://docs.rs/crossbeam/0.8.1/crossbeam/deque/index.html, but I'm having trouble...
https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-channel/benchmarks Benchmark of these packages are out dated(2018). Maybe we can update them.
Since an SC fence is issued when obtaining the guard, try_advance doesn't need to issue another fence ~~if it uses the guard's local epoch for advancing the global epoch~~. `cargo...
### Background To use rayon in game engine code, I was [investigating why `ThreadPool::install` was allocating every invocation](https://github.com/rayon-rs/rayon/issues/666). It turned out there are two sources of allocation, - One was...
This change gives *some* `channel::Receiver`s the ability to spawn new senders at will. Currently, Receivers are disconnected as soon as the Sender count reaches zero, as new Senders can only...
Here's a simple benchmark: ```rust #![feature(test)] extern crate crossbeam_channel as channel; extern crate test; use std::sync::mpsc; #[bench] fn oneshot_mpsc(b: &mut test::Bencher) { b.iter(|| { let (s, r) = mpsc::channel(); s.send(0).unwrap();...