public void RunOnCurrentThread() { foreach (var workItem in WorkItemsQueue.GetConsumingEnumerable()) { workItem.Key(workItem.Value); } }
public override void Post(SendOrPostCallback d, object state) { if (d == null) { throw new ArgumentNullException("d"); } WorkItemsQueue.Add(new KeyValuePair <SendOrPostCallback, object>(d, state)); }
/// <summary> /// Constructor /// </summary> public SmartThreadPool() { this._name = "SmartThreadPool"; this._workerThreads = Hashtable.Synchronized(new Hashtable()); this._workItemsQueue = new WorkItemsQueue(); this._stpStartInfo = new STPStartInfo(); this._isIdleWaitHandle = new ManualResetEvent(true); this._shuttingDownEvent = new ManualResetEvent(false); this._workItemsGroups = Hashtable.Synchronized(new Hashtable()); this._pcs = NullSTPInstancePerformanceCounters.Instance; this.Initialize(); }
public void IdempotenceWaiterEntry() { WorkItemsQueue q = new WorkItemsQueue(); Assert.AreEqual(0, q.WaitersCount); WorkItemsQueue.WaiterEntry we1 = new WorkItemsQueue.WaiterEntry(); q.PushWaiter(we1); Assert.AreEqual(1, q.WaitersCount); q.PushWaiter(we1); Assert.AreEqual(1, q.WaitersCount); WorkItemsQueue.WaiterEntry we2 = new WorkItemsQueue.WaiterEntry(); q.PushWaiter(we2); Assert.AreEqual(2, q.WaitersCount); q.PushWaiter(we2); Assert.AreEqual(2, q.WaitersCount); }
public void Complete() { WorkItemsQueue.CompleteAdding(); }