Skip to content

Commit e11aad9

Browse files
committed
Update crossbeam-deque to 0.7
The only substantive change is to 'take_local_job'. 'Worker::pop` now returns a plain 'Option<T>', so there's no need to loop anymore
1 parent b8b97a1 commit e11aad9

File tree

4 files changed

+15
-17
lines changed

4 files changed

+15
-17
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ exclude = ["ci"]
1919

2020
[dependencies]
2121
rayon-core = { version = "1.5.0", path = "rayon-core" }
22-
crossbeam-deque = "0.6.3"
22+
crossbeam-deque = "0.7"
2323

2424
# This is a public dependency!
2525
[dependencies.either]

rayon-core/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ categories = ["concurrency"]
1717
[dependencies]
1818
num_cpus = "1.2"
1919
lazy_static = "1"
20-
crossbeam-deque = "0.6.3"
20+
crossbeam-deque = "0.7"
2121
crossbeam-queue = "0.1.2"
2222
crossbeam-utils = "0.6.5"
2323

rayon-core/src/registry.rs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crossbeam_deque::{self as deque, Pop, Steal, Stealer, Worker};
1+
use crossbeam_deque::{self as deque, Steal, Stealer, Worker};
22
use crossbeam_queue::SegQueue;
33
#[cfg(rayon_unstable)]
44
use internal::task::Task;
@@ -224,11 +224,14 @@ impl Registry {
224224

225225
let (workers, stealers): (Vec<_>, Vec<_>) = (0..n_threads)
226226
.map(|_| {
227-
if breadth_first {
228-
deque::fifo()
227+
let worker = if breadth_first {
228+
deque::Worker::new_fifo()
229229
} else {
230-
deque::lifo()
231-
}
230+
deque::Worker::new_lifo()
231+
};
232+
233+
let stealer = worker.stealer();
234+
(worker, stealer)
232235
})
233236
.unzip();
234237

@@ -674,13 +677,7 @@ impl WorkerThread {
674677
/// bottom.
675678
#[inline]
676679
pub(super) unsafe fn take_local_job(&self) -> Option<JobRef> {
677-
loop {
678-
match self.worker.pop() {
679-
Pop::Empty => return None,
680-
Pop::Data(d) => return Some(d),
681-
Pop::Retry => {}
682-
}
683-
}
680+
self.worker.pop()
684681
}
685682

686683
/// Wait until the latch is set. Try to keep busy by popping and
@@ -763,7 +760,7 @@ impl WorkerThread {
763760
loop {
764761
match victim.stealer.steal() {
765762
Steal::Empty => return None,
766-
Steal::Data(d) => {
763+
Steal::Success(d) => {
767764
log!(StoleWork {
768765
worker: self.index,
769766
victim: victim_index

src/iter/par_bridge.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ where
7979
C: UnindexedConsumer<Self::Item>,
8080
{
8181
let split_count = AtomicUsize::new(current_num_threads());
82-
let (worker, stealer) = deque::fifo();
82+
let worker = deque::Worker::new_fifo();
83+
let stealer = worker.stealer();
8384
let done = AtomicBool::new(false);
8485
let iter = Mutex::new((self.iter, worker));
8586

@@ -149,7 +150,7 @@ where
149150
{
150151
loop {
151152
match self.items.steal() {
152-
Steal::Data(it) => {
153+
Steal::Success(it) => {
153154
folder = folder.consume(it);
154155
if folder.full() {
155156
return folder;

0 commit comments

Comments
 (0)