mirror of
https://github.com/opensim/opensim.git
synced 2026-05-14 02:39:52 +08:00
SmartThreadPool code comes from http://www.codeproject.com/Articles/7933/Smart-Thread-Pool This version implements thread abort (via WorkItem.Cancel(true)), threadpool naming, max thread stack, etc. so we no longer need to manually patch those. However, two changes have been made to stock 2.2.3. Major change: WorkItem.Cancel(bool abortExecution) in our version does not succeed if the work item was in progress and thread abort was not specified. This is to match previous behaviour where we handle co-operative termination via another mechanism rather than checking WorkItem.IsCanceled. Minor change: Did not add STP's StopWatch implementation as this is only used WinCE and Silverlight and causes a build clash with System.Diagnostics.StopWatch The reason for updating is to see if this improves http://opensimulator.org/mantis/view.php?id=6557 and http://opensimulator.org/mantis/view.php?id=6586
28 lines
733 B
C#
28 lines
733 B
C#
|
|
namespace Amib.Threading.Internal
|
|
{
|
|
/// <summary>
|
|
/// An internal delegate to call when the WorkItem starts or completes
|
|
/// </summary>
|
|
internal delegate void WorkItemStateCallback(WorkItem workItem);
|
|
|
|
internal interface IInternalWorkItemResult
|
|
{
|
|
event WorkItemStateCallback OnWorkItemStarted;
|
|
event WorkItemStateCallback OnWorkItemCompleted;
|
|
}
|
|
|
|
internal interface IInternalWaitableResult
|
|
{
|
|
/// <summary>
|
|
/// This method is intent for internal use.
|
|
/// </summary>
|
|
IWorkItemResult GetWorkItemResult();
|
|
}
|
|
|
|
public interface IHasWorkItemPriority
|
|
{
|
|
WorkItemPriority WorkItemPriority { get; }
|
|
}
|
|
}
|