mirror of
https://github.com/farcasclaudiu/SmartThreadPool.git
synced 2026-06-28 13:01:05 +03:00
CHG: tasks can have priority
(cherry picked from commit 3ec0a40dc9b43b4b11082a3e0d618c266a809522)
This commit is contained in:
committed by
Piotr Wysocki
parent
17f4f59706
commit
c71422756d
@@ -267,6 +267,18 @@ namespace Amib.Threading
|
|||||||
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
||||||
IWorkItemResult QueueWorkItem(Action action);
|
IWorkItemResult QueueWorkItem(Action action);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Queue a work item.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
||||||
|
IWorkItemResult QueueWorkItem (Action action, WorkItemPriority priority);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Queue a work item.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
||||||
|
IWorkItemResult QueueWorkItem<T> (Action<T> action, T arg, WorkItemPriority priority);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Queue a work item.
|
/// Queue a work item.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -279,18 +291,36 @@ namespace Amib.Threading
|
|||||||
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
||||||
IWorkItemResult QueueWorkItem<T1, T2>(Action<T1, T2> action, T1 arg1, T2 arg2);
|
IWorkItemResult QueueWorkItem<T1, T2>(Action<T1, T2> action, T1 arg1, T2 arg2);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Queue a work item.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
||||||
|
IWorkItemResult QueueWorkItem<T1, T2> (Action<T1, T2> action, T1 arg1, T2 arg2, WorkItemPriority priority);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Queue a work item.
|
/// Queue a work item.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
||||||
IWorkItemResult QueueWorkItem<T1, T2, T3>(Action<T1, T2, T3> action, T1 arg1, T2 arg2, T3 arg3);
|
IWorkItemResult QueueWorkItem<T1, T2, T3>(Action<T1, T2, T3> action, T1 arg1, T2 arg2, T3 arg3);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Queue a work item.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
||||||
|
IWorkItemResult QueueWorkItem<T1, T2, T3> (Action<T1, T2, T3> action, T1 arg1, T2 arg2, T3 arg3, WorkItemPriority priority);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Queue a work item.
|
/// Queue a work item.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
||||||
IWorkItemResult QueueWorkItem<T1, T2, T3, T4>(Action<T1, T2, T3, T4> action, T1 arg1, T2 arg2, T3 arg3, T4 arg4);
|
IWorkItemResult QueueWorkItem<T1, T2, T3, T4>(Action<T1, T2, T3, T4> action, T1 arg1, T2 arg2, T3 arg3, T4 arg4);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Queue a work item.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Returns a IWorkItemResult object, but its GetResult() will always return null</returns>
|
||||||
|
IWorkItemResult QueueWorkItem<T1, T2, T3, T4> (Action<T1, T2, T3, T4> action, T1 arg1, T2 arg2, T3 arg3, T4 arg4, WorkItemPriority priority);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region QueueWorkItem(Func<...>)
|
#region QueueWorkItem(Func<...>)
|
||||||
|
|||||||
@@ -277,6 +277,11 @@ namespace Amib.Threading.Internal
|
|||||||
#region QueueWorkItem(Action<...>)
|
#region QueueWorkItem(Action<...>)
|
||||||
|
|
||||||
public IWorkItemResult QueueWorkItem(Action action)
|
public IWorkItemResult QueueWorkItem(Action action)
|
||||||
|
{
|
||||||
|
return QueueWorkItem (action, SmartThreadPool.DefaultWorkItemPriority);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IWorkItemResult QueueWorkItem (Action action, WorkItemPriority priority)
|
||||||
{
|
{
|
||||||
PreQueueWorkItem ();
|
PreQueueWorkItem ();
|
||||||
WorkItem workItem = WorkItemFactory.CreateWorkItem (
|
WorkItem workItem = WorkItemFactory.CreateWorkItem (
|
||||||
@@ -286,12 +291,17 @@ namespace Amib.Threading.Internal
|
|||||||
{
|
{
|
||||||
action.Invoke ();
|
action.Invoke ();
|
||||||
return null;
|
return null;
|
||||||
});
|
}, priority);
|
||||||
Enqueue (workItem);
|
Enqueue (workItem);
|
||||||
return workItem.GetWorkItemResult ();
|
return workItem.GetWorkItemResult ();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IWorkItemResult QueueWorkItem<T>(Action<T> action, T arg)
|
public IWorkItemResult QueueWorkItem<T>(Action<T> action, T arg)
|
||||||
|
{
|
||||||
|
return QueueWorkItem<T> (action, arg, SmartThreadPool.DefaultWorkItemPriority);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IWorkItemResult QueueWorkItem<T> (Action<T> action, T arg, WorkItemPriority priority)
|
||||||
{
|
{
|
||||||
PreQueueWorkItem ();
|
PreQueueWorkItem ();
|
||||||
WorkItem workItem = WorkItemFactory.CreateWorkItem (
|
WorkItem workItem = WorkItemFactory.CreateWorkItem (
|
||||||
@@ -302,12 +312,17 @@ namespace Amib.Threading.Internal
|
|||||||
action.Invoke (arg);
|
action.Invoke (arg);
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
WIGStartInfo.FillStateWithArgs ? new object[] { arg } : null);
|
WIGStartInfo.FillStateWithArgs ? new object[] { arg } : null, priority);
|
||||||
Enqueue (workItem);
|
Enqueue (workItem);
|
||||||
return workItem.GetWorkItemResult ();
|
return workItem.GetWorkItemResult ();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IWorkItemResult QueueWorkItem<T1, T2>(Action<T1, T2> action, T1 arg1, T2 arg2)
|
public IWorkItemResult QueueWorkItem<T1, T2>(Action<T1, T2> action, T1 arg1, T2 arg2)
|
||||||
|
{
|
||||||
|
return QueueWorkItem<T1, T2> (action, arg1, arg2, SmartThreadPool.DefaultWorkItemPriority);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IWorkItemResult QueueWorkItem<T1, T2> (Action<T1, T2> action, T1 arg1, T2 arg2, WorkItemPriority priority)
|
||||||
{
|
{
|
||||||
PreQueueWorkItem ();
|
PreQueueWorkItem ();
|
||||||
WorkItem workItem = WorkItemFactory.CreateWorkItem (
|
WorkItem workItem = WorkItemFactory.CreateWorkItem (
|
||||||
@@ -318,12 +333,18 @@ namespace Amib.Threading.Internal
|
|||||||
action.Invoke (arg1, arg2);
|
action.Invoke (arg1, arg2);
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2 } : null);
|
WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2 } : null, priority);
|
||||||
Enqueue (workItem);
|
Enqueue (workItem);
|
||||||
return workItem.GetWorkItemResult ();
|
return workItem.GetWorkItemResult ();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IWorkItemResult QueueWorkItem<T1, T2, T3>(Action<T1, T2, T3> action, T1 arg1, T2 arg2, T3 arg3)
|
public IWorkItemResult QueueWorkItem<T1, T2, T3>(Action<T1, T2, T3> action, T1 arg1, T2 arg2, T3 arg3)
|
||||||
|
{
|
||||||
|
return QueueWorkItem<T1, T2, T3> (action, arg1, arg2, arg3, SmartThreadPool.DefaultWorkItemPriority);
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IWorkItemResult QueueWorkItem<T1, T2, T3> (Action<T1, T2, T3> action, T1 arg1, T2 arg2, T3 arg3, WorkItemPriority priority)
|
||||||
{
|
{
|
||||||
PreQueueWorkItem ();
|
PreQueueWorkItem ();
|
||||||
WorkItem workItem = WorkItemFactory.CreateWorkItem (
|
WorkItem workItem = WorkItemFactory.CreateWorkItem (
|
||||||
@@ -334,13 +355,20 @@ namespace Amib.Threading.Internal
|
|||||||
action.Invoke (arg1, arg2, arg3);
|
action.Invoke (arg1, arg2, arg3);
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2, arg3 } : null);
|
WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2, arg3 } : null, priority);
|
||||||
Enqueue (workItem);
|
Enqueue (workItem);
|
||||||
return workItem.GetWorkItemResult ();
|
return workItem.GetWorkItemResult ();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IWorkItemResult QueueWorkItem<T1, T2, T3, T4>(
|
public IWorkItemResult QueueWorkItem<T1, T2, T3, T4>(
|
||||||
Action<T1, T2, T3, T4> action, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
|
Action<T1, T2, T3, T4> action, T1 arg1, T2 arg2, T3 arg3, T4 arg4)
|
||||||
|
{
|
||||||
|
return QueueWorkItem<T1, T2, T3, T4> (action, arg1, arg2, arg3, arg4,
|
||||||
|
SmartThreadPool.DefaultWorkItemPriority);
|
||||||
|
}
|
||||||
|
|
||||||
|
public IWorkItemResult QueueWorkItem<T1, T2, T3, T4> (
|
||||||
|
Action<T1, T2, T3, T4> action, T1 arg1, T2 arg2, T3 arg3, T4 arg4, WorkItemPriority priority)
|
||||||
{
|
{
|
||||||
PreQueueWorkItem ();
|
PreQueueWorkItem ();
|
||||||
WorkItem workItem = WorkItemFactory.CreateWorkItem (
|
WorkItem workItem = WorkItemFactory.CreateWorkItem (
|
||||||
@@ -351,7 +379,7 @@ namespace Amib.Threading.Internal
|
|||||||
action.Invoke (arg1, arg2, arg3, arg4);
|
action.Invoke (arg1, arg2, arg3, arg4);
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2, arg3, arg4 } : null);
|
WIGStartInfo.FillStateWithArgs ? new object[] { arg1, arg2, arg3, arg4 } : null, priority);
|
||||||
Enqueue (workItem);
|
Enqueue (workItem);
|
||||||
return workItem.GetWorkItemResult ();
|
return workItem.GetWorkItemResult ();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user