C# Class DotNetWorkQueue.TaskScheduling.SmartThreadPoolTaskScheduler

A task scheduler for IConsumerQueueScheduler This uses SmartThreadPool https://github.com/amibar/SmartThreadPool to handle the threads internally
Inheritance: ATaskScheduler
Afficher le fichier Open project: blehnen/DotNetWorkQueue

Private Properties

Свойство Type Description
PostExecuteWorkItemCallback void

Méthodes publiques

Méthode Description
AddTask ( Task task ) : void

Adds a new task to the scheduler.

AddWorkGroup ( string name, int concurrencyLevel ) : IWorkGroup

Adds a new work group.

AddWorkGroup ( string name, int concurrencyLevel, int maxQueueSize ) : IWorkGroup

Adds a new work group.

RoomForNewWorkGroupTask ( IWorkGroup group ) : RoomForNewTaskResult

If true, the task scheduler has room for the specified work group task

SmartThreadPoolTaskScheduler ( ITaskSchedulerConfiguration configuration, IWaitForEventOrCancelThreadPool waitForFreeThread, IMetrics metrics ) : System

Initializes a new instance of the SmartThreadPoolTaskScheduler class.

Start ( ) : void

Starts this instance.

Subscribe ( ) : int

Informs the scheduler that it has another client connected

UnSubscribe ( int id ) : void

Informs the scheduler that a client has disconnected

Méthodes protégées

Méthode Description
DeincrementCounter ( ) : void

De-increments the counter for the running tasks

DeincrementGroup ( IWorkGroup group ) : void

De-increments the task counter for a specific group.

Dispose ( bool disposing ) : void

Releases unmanaged and - optionally - managed resources.

GetScheduledTasks ( ) : IEnumerable

Gets the tasks currently scheduled to this scheduler.

This will always return an empty enumerable, as tasks are launched as soon as they're queued; we also don't want the .net scheduler to mess with our internal queue.

HaveRoomForWorkGroupTask ( IWorkGroup group ) : bool

Returns true if the work group has room for a new task

IncrementCounter ( ) : void

Increments the counter for the running tasks

IncrementGroup ( IWorkGroup group ) : void

Increments the task count for a specific group

QueueTask ( Task task ) : void

Queues a T:System.Threading.Tasks.Task to the scheduler.

SetWaitHandle ( IWorkGroup group ) : void

Sets the wait handle.

ThrowIfDisposed ( [ name = "" ) : void

Throws an exception if this instance has been disposed.

TryExecuteTaskInline ( Task task, bool taskWasPreviouslyQueued ) : bool

Runs the provided task on the current thread.

TryExecuteTaskWrapped ( Task task, StateInformation state ) : StateInformation

A wrapper for executing the task, so that we can return the state information back to the caller

Private Methods

Méthode Description
PostExecuteWorkItemCallback ( IWorkItemResult wir ) : void

Fires after each task is complete.

Method Details

AddTask() public méthode

Adds a new task to the scheduler.
public AddTask ( Task task ) : void
task Task The task.
Résultat void

AddWorkGroup() public méthode

Adds a new work group.
public AddWorkGroup ( string name, int concurrencyLevel ) : IWorkGroup
name string The name.
concurrencyLevel int The concurrency level.
Résultat IWorkGroup

AddWorkGroup() public méthode

Adds a new work group.
Start must be called on the scheduler before adding work groups
public AddWorkGroup ( string name, int concurrencyLevel, int maxQueueSize ) : IWorkGroup
name string The name.
concurrencyLevel int The concurrency level.
maxQueueSize int Maximum size of the queue. Work groups have a queue that is separate per queue, and is not shared with non work group items
Résultat IWorkGroup

DeincrementCounter() protected méthode

De-increments the counter for the running tasks
protected DeincrementCounter ( ) : void
Résultat void

DeincrementGroup() protected méthode

De-increments the task counter for a specific group.
protected DeincrementGroup ( IWorkGroup group ) : void
group IWorkGroup The group.
Résultat void

Dispose() protected méthode

Releases unmanaged and - optionally - managed resources.
protected Dispose ( bool disposing ) : void
disposing bool true to release both managed and unmanaged resources; false to release only unmanaged resources.
Résultat void

GetScheduledTasks() protected méthode

Gets the tasks currently scheduled to this scheduler.
This will always return an empty enumerable, as tasks are launched as soon as they're queued; we also don't want the .net scheduler to mess with our internal queue.
protected GetScheduledTasks ( ) : IEnumerable
Résultat IEnumerable

HaveRoomForWorkGroupTask() protected méthode

Returns true if the work group has room for a new task
protected HaveRoomForWorkGroupTask ( IWorkGroup group ) : bool
group IWorkGroup The group.
Résultat bool

IncrementCounter() protected méthode

Increments the counter for the running tasks
protected IncrementCounter ( ) : void
Résultat void

IncrementGroup() protected méthode

Increments the task count for a specific group
protected IncrementGroup ( IWorkGroup group ) : void
group IWorkGroup The group.
Résultat void

QueueTask() protected final méthode

Queues a T:System.Threading.Tasks.Task to the scheduler.
protected final QueueTask ( Task task ) : void
task Task The to be queued.
Résultat void

RoomForNewWorkGroupTask() public méthode

If true, the task scheduler has room for the specified work group task
public RoomForNewWorkGroupTask ( IWorkGroup group ) : RoomForNewTaskResult
group IWorkGroup The group.
Résultat RoomForNewTaskResult

SetWaitHandle() protected méthode

Sets the wait handle.
protected SetWaitHandle ( IWorkGroup group ) : void
group IWorkGroup The group.
Résultat void

SmartThreadPoolTaskScheduler() public méthode

Initializes a new instance of the SmartThreadPoolTaskScheduler class.
public SmartThreadPoolTaskScheduler ( ITaskSchedulerConfiguration configuration, IWaitForEventOrCancelThreadPool waitForFreeThread, IMetrics metrics ) : System
configuration ITaskSchedulerConfiguration The configuration.
waitForFreeThread IWaitForEventOrCancelThreadPool The wait for free thread.
metrics IMetrics the metrics factory
Résultat System

Start() public méthode

Starts this instance.
Start must only be called 1 time
public Start ( ) : void
Résultat void

Subscribe() public méthode

Informs the scheduler that it has another client connected
public Subscribe ( ) : int
Résultat int

ThrowIfDisposed() protected méthode

Throws an exception if this instance has been disposed.
protected ThrowIfDisposed ( [ name = "" ) : void
name [ The name.
Résultat void

TryExecuteTaskInline() protected méthode

Runs the provided task on the current thread.
protected TryExecuteTaskInline ( Task task, bool taskWasPreviouslyQueued ) : bool
task Task The task to be executed.
taskWasPreviouslyQueued bool Ignored.
Résultat bool

TryExecuteTaskWrapped() protected méthode

A wrapper for executing the task, so that we can return the state information back to the caller
protected TryExecuteTaskWrapped ( Task task, StateInformation state ) : StateInformation
task Task The task.
state StateInformation The state.
Résultat StateInformation

UnSubscribe() public méthode

Informs the scheduler that a client has disconnected
public UnSubscribe ( int id ) : void
id int The client identifier.
Résultat void