Skip to content

Commit 5e7060e

Browse files
1 parent 785b813 commit 5e7060e

2 files changed

Lines changed: 15 additions & 15 deletions

File tree

Source/Queue/StealingQueue.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
use std::sync::Arc;
99

10-
use crossbeam_deque::{Injector, Stealer, Worker as WorkerDeque};
10+
use crossbeam_deque::{Injector, Stealer, Worker};
1111
use rand::seq::SliceRandom;
1212

1313
// The task must have a way to specify its priority. We define a trait for this.
@@ -44,11 +44,11 @@ pub struct StealingQueue<T:Prioritized<P = Priority>> {
4444

4545
/// A context object that contains everything a single worker thread needs to
4646
/// operate. This includes its own private, thread-local deques.
47-
pub struct WorkerContext<T> {
47+
pub struct Context<T> {
4848
Id:usize,
4949

5050
// High, Normal, Low
51-
Local:(WorkerDeque<T>, WorkerDeque<T>, WorkerDeque<T>),
51+
Local:(Worker<T>, Worker<T>, Worker<T>),
5252

5353
Shared:Arc<Shared<T>>,
5454
}
@@ -59,18 +59,18 @@ impl<T:Prioritized<P = Priority>> StealingQueue<T> {
5959
/// Returns a tuple containing:
6060
/// 1. The `StealingQueue` for submitting tasks.
6161
/// 2. A `Vec` of `WorkerContext`s, one for each worker to be spawned.
62-
pub fn New(Count:usize) -> (Self, Vec<WorkerContext<T>>) {
63-
let mut High:Vec<WorkerDeque<T>> = Vec::with_capacity(Count);
62+
pub fn New(Count:usize) -> (Self, Vec<Context<T>>) {
63+
let mut High:Vec<Worker<T>> = Vec::with_capacity(Count);
6464

65-
let mut Normal:Vec<WorkerDeque<T>> = Vec::with_capacity(Count);
65+
let mut Normal:Vec<Worker<T>> = Vec::with_capacity(Count);
6666

67-
let mut Low:Vec<WorkerDeque<T>> = Vec::with_capacity(Count);
67+
let mut Low:Vec<Worker<T>> = Vec::with_capacity(Count);
6868

6969
// --- FIX: Use the documented API for creating Worker/Stealer pairs ---
7070
let StealerHigh:Vec<Stealer<T>> = (0..Count)
7171
.map(|_| {
7272
// 1. Create the Worker.
73-
let Worker = WorkerDeque::new_fifo();
73+
let Worker = Worker::new_fifo();
7474

7575
// 2. Get its Stealer.
7676
let Stealer = Worker.stealer();
@@ -85,7 +85,7 @@ impl<T:Prioritized<P = Priority>> StealingQueue<T> {
8585

8686
let StealerNormal:Vec<Stealer<T>> = (0..Count)
8787
.map(|_| {
88-
let Worker = WorkerDeque::new_fifo();
88+
let Worker = Worker::new_fifo();
8989

9090
let Stealer = Worker.stealer();
9191

@@ -97,7 +97,7 @@ impl<T:Prioritized<P = Priority>> StealingQueue<T> {
9797

9898
let StealerLow:Vec<Stealer<T>> = (0..Count)
9999
.map(|_| {
100-
let Worker = WorkerDeque::new_fifo();
100+
let Worker = Worker::new_fifo();
101101

102102
let Stealer = Worker.stealer();
103103

@@ -117,7 +117,7 @@ impl<T:Prioritized<P = Priority>> StealingQueue<T> {
117117

118118
for Id in 0..Count {
119119
// We use remove(0) because we built the Vecs in order and need to consume them.
120-
Context.push(WorkerContext {
120+
Context.push(Context {
121121
Id,
122122

123123
Local:(High.remove(0), Normal.remove(0), Low.remove(0)),
@@ -144,7 +144,7 @@ impl<T:Prioritized<P = Priority>> StealingQueue<T> {
144144
}
145145
}
146146

147-
impl<T> WorkerContext<T> {
147+
impl<T> Context<T> {
148148
/// Finds the next available task for this worker.
149149
/// Implements the full priority-aware, work-stealing logic.
150150
pub fn NextTask(&self) -> Option<T> {
@@ -162,7 +162,7 @@ impl<T> WorkerContext<T> {
162162
.or_else(|| self.Steal(&self.Shared.Injector.2, &self.Shared.Stealer.2, &self.Local.2))
163163
}
164164

165-
fn Steal<'a>(&self, Injector:&'a Injector<T>, Stealer:&'a [Stealer<T>], Local:&'a WorkerDeque<T>) -> Option<T> {
165+
fn Steal<'a>(&self, Injector:&'a Injector<T>, Stealer:&'a [Stealer<T>], Local:&'a Worker<T>) -> Option<T> {
166166
if Injector.steal_batch_and_pop(Local).is_success() {
167167
return Local.pop();
168168
}

Source/Scheduler/Scheduler.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@ impl Scheduler {
3535
let IsRunning = Arc::new(AtomicBool::new(true));
3636

3737
// 1. Create the queue system. This is now a single, clean line.
38-
let (Queue, WorkerContexts) = StealingQueue::New(number_of_workers);
38+
let (Queue, Context) = StealingQueue::New(number_of_workers);
3939

4040
let mut WorkerHandles = Vec::with_capacity(number_of_workers);
4141

4242
// 2. Iterate over the contexts, giving one to each new thread.
43-
for Context in WorkerContexts.into_iter() {
43+
for Context in Context.into_iter() {
4444
let CloneIsRunning = IsRunning.clone();
4545

4646
let WorkerHandle = tokio::spawn(async move {

0 commit comments

Comments
 (0)