Пример #1
0
 public void RunOnCurrentThread()
 {
     foreach (var workItem in WorkItemsQueue.GetConsumingEnumerable())
     {
         workItem.Key(workItem.Value);
     }
 }
Пример #2
0
 public override void Post(SendOrPostCallback d, object state)
 {
     if (d == null)
     {
         throw new ArgumentNullException("d");
     }
     WorkItemsQueue.Add(new KeyValuePair <SendOrPostCallback, object>(d, state));
 }
Пример #3
0
 /// <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);
        }
Пример #5
0
 public void Complete()
 {
     WorkItemsQueue.CompleteAdding();
 }