77
88use std:: sync:: Arc ;
99
10- use crossbeam_deque:: { Injector , Stealer , Worker as WorkerDeque } ;
10+ use crossbeam_deque:: { Injector , Stealer , Worker } ;
1111use 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 }
0 commit comments