StuBS
|
The dispatcher dispatches threads and, by that, puts the scheduler's decisions into action. More...
#include <thread/dispatcher.h>
Static Public Member Functions | |
static Thread * | active () |
Returns the thread currently running on the CPU core calling this method. | |
static bool | isActive (const Thread *thread, unsigned *cpu=nullptr) |
Check if thread is currently active. | |
static void | go (Thread *first) |
This method stores first as life pointer for this CPU core and triggers the execution of first thread. | |
static void | dispatch (Thread *next) |
Updates the life pointer to next and issues a thread change from the old to the new life pointer. | |
Private Member Functions | |
Dispatcher () | |
private constructor to prevent instantiation | |
Static Private Member Functions | |
static void | setActive (Thread *thread) |
set the currently active thread | |
Static Private Attributes | |
static PerCore< Thread * > | life |
Initialize life pointer with nullptr to indicate that nothing is (yet) being executed on the respective CPU. | |
The dispatcher dispatches threads and, by that, puts the scheduler's decisions into action.
The dispatcher manages the life pointer that refers to the currently active thread and performs the actual switching of processes. For single-core systems, a single life pointer is sufficient, as only a single thread can be active at any one time. On multi-core systems, every CPU core needs its own life pointer.
|
private |
private constructor to prevent instantiation
set the currently active thread
thread | active Thread |
Returns the thread currently running on the CPU core calling this method.
Check if thread is currently active.
thread | Pointer to the thread in question |
cpu | will receive the core number if cpu pointer is not nullptr and the thread is currently active |
true
if currently running, false otherwise This method stores first
as life pointer for this CPU core and triggers the execution of first
thread.
first | First thread to be executed on this CPU core. |
Updates the life pointer to next and issues a thread change from the old to the new life pointer.
next | Next thread to be executed. |
Initialize life pointer with nullptr to indicate that nothing is (yet) being executed on the respective CPU.