/// <summary> /// Enqueues the specified operation. /// </summary> /// <param name="operation">The operation.</param> /// <param name="queue">The queue.</param> private void Enqueue(IThreadPoolOperation operation, Queue<IThreadPoolOperation> queue) { lock (queue) queue.Enqueue(operation); if (!this.ShouldSpinUpNewThread) return; Interlocked.Increment(ref _threads); this.SpinUpNewThreadForProcessingQueue(); }
/// <summary> /// Enqueues the specified operation. /// </summary> /// <param name="operation">The operation.</param> public void Enqueue(IThreadPoolOperation operation) { this.Enqueue(operation, this._eventQueue); }