using System; using Amib.Threading.Internal; namespace Amib.Threading { public partial class SmartThreadPool { #region ThreadEntry class internal class ThreadEntry { /// /// The thread creation time /// The value is stored as UTC value. /// private readonly DateTime _creationTime; /// /// The last time this thread has been running /// It is updated by IAmAlive() method /// The value is stored as UTC value. /// private DateTime _lastAliveTime; /// /// A reference from each thread in the thread pool to its SmartThreadPool /// object container. /// With this variable a thread can know whatever it belongs to a /// SmartThreadPool. /// private readonly SmartThreadPool _associatedSmartThreadPool; /// /// A reference to the current work item a thread from the thread pool /// is executing. /// public WorkItem CurrentWorkItem { get; set; } public ThreadEntry(SmartThreadPool stp) { _associatedSmartThreadPool = stp; _creationTime = DateTime.UtcNow; _lastAliveTime = DateTime.MinValue; } public SmartThreadPool AssociatedSmartThreadPool { get { return _associatedSmartThreadPool; } } public void IAmAlive() { _lastAliveTime = DateTime.UtcNow; } } #endregion } }