public WorkQueueLocals(CustomWorkQueueBase <TWorkItem> workQueue)
            {
                _workQueue = workQueue;

                Random    = new FastRandom(Thread.CurrentThread.ManagedThreadId);
                Queue     = new WorkStealingQueue <TWorkItem>();
                Semaphore = new SemaphoreSlim(0, 1);
                WaitNode  = new WaitNode(Semaphore);

                WorkStealingQueueList.Add(ref _workQueue._localQueues, Queue);
            }
 public void Dispose()
 {
     WorkStealingQueueList.Remove(ref _workQueue._localQueues, Queue);
     Semaphore.Dispose();
 }