internal void EnqueueIndependent(WorkItem item) { var chain = new WorkChain(this); chain.AppendItem(item); chain.StartProcessing(); }
internal void SetOwningChain(WorkChain workChain) { if (_owningChain != null) { throw new InvalidOperationException("Cannot set owning chain multiple times"); } _owningChain = workChain; }
internal void EnqueueChain(WorkChain chain) { var work = chain.ProcessedItem; Debug.Assert(work.PlannedProcessor == this, "Cannot process item on current processor"); lock (_L_toProcess) { _toProcess.Enqueue(work); Monitor.Pulse(_L_toProcess); } }