C# 클래스 DotNetWorkQueue.TaskScheduling.SmartThreadPoolTaskScheduler

A task scheduler for IConsumerQueueScheduler This uses SmartThreadPool https://github.com/amibar/SmartThreadPool to handle the threads internally
상속: ATaskScheduler
파일 보기 프로젝트 열기: blehnen/DotNetWorkQueue

Private Properties

프로퍼티 타입 설명
PostExecuteWorkItemCallback void

공개 메소드들

메소드 설명
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

보호된 메소드들

메소드 설명
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

비공개 메소드들

메소드 설명
PostExecuteWorkItemCallback ( IWorkItemResult wir ) : void

Fires after each task is complete.

메소드 상세

AddTask() 공개 메소드

Adds a new task to the scheduler.
public AddTask ( Task task ) : void
task Task The task.
리턴 void

AddWorkGroup() 공개 메소드

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

AddWorkGroup() 공개 메소드

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
리턴 IWorkGroup

DeincrementCounter() 보호된 메소드

De-increments the counter for the running tasks
protected DeincrementCounter ( ) : void
리턴 void

DeincrementGroup() 보호된 메소드

De-increments the task counter for a specific group.
protected DeincrementGroup ( IWorkGroup group ) : void
group IWorkGroup The group.
리턴 void

Dispose() 보호된 메소드

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.
리턴 void

GetScheduledTasks() 보호된 메소드

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
리턴 IEnumerable

HaveRoomForWorkGroupTask() 보호된 메소드

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

IncrementCounter() 보호된 메소드

Increments the counter for the running tasks
protected IncrementCounter ( ) : void
리턴 void

IncrementGroup() 보호된 메소드

Increments the task count for a specific group
protected IncrementGroup ( IWorkGroup group ) : void
group IWorkGroup The group.
리턴 void

QueueTask() 보호된 최종 메소드

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

RoomForNewWorkGroupTask() 공개 메소드

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

SetWaitHandle() 보호된 메소드

Sets the wait handle.
protected SetWaitHandle ( IWorkGroup group ) : void
group IWorkGroup The group.
리턴 void

SmartThreadPoolTaskScheduler() 공개 메소드

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
리턴 System

Start() 공개 메소드

Starts this instance.
Start must only be called 1 time
public Start ( ) : void
리턴 void

Subscribe() 공개 메소드

Informs the scheduler that it has another client connected
public Subscribe ( ) : int
리턴 int

ThrowIfDisposed() 보호된 메소드

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

TryExecuteTaskInline() 보호된 메소드

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.
리턴 bool

TryExecuteTaskWrapped() 보호된 메소드

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.
리턴 StateInformation

UnSubscribe() 공개 메소드

Informs the scheduler that a client has disconnected
public UnSubscribe ( int id ) : void
id int The client identifier.
리턴 void