6 instantiations of ImmutableIdDispenser
System.Private.CoreLib (6)
System\Threading\ManagedThreadId.cs (6)
87return new ImmutableIdDispenser(null, null, 1, BitsPerNode, 1);
96return new ImmutableIdDispenser(this, null, _size + 1, checked(2 * _size + BitsPerNode), 1);
117left = new ImmutableIdDispenser(null, null, 1, ChildSize, 1);
123right = new ImmutableIdDispenser(null, null, 1, ChildSize, 1);
141return new ImmutableIdDispenser(left, right, _used + 1, _size, bitmap);
173return new ImmutableIdDispenser(left, right, _used - 1, _size, bitmap);
19 references to ImmutableIdDispenser
System.Private.CoreLib (19)
System\Threading\ManagedThreadId.cs (19)
23private readonly ImmutableIdDispenser? _left; // Child nodes
24private readonly ImmutableIdDispenser? _right;
33private ImmutableIdDispenser(ImmutableIdDispenser? left, ImmutableIdDispenser? right, int used, int size, uint bitmap)
80public static ImmutableIdDispenser Empty
91public ImmutableIdDispenser AllocateId(out int id)
100var left = _left;
101var right = _right;
144public ImmutableIdDispenser? RecycleId(int id)
152var left = _left;
153var right = _right;
201private static ImmutableIdDispenser? s_idDispenser;
210Interlocked.CompareExchange(ref s_idDispenser, ImmutableIdDispenser.Empty, null);
216var priorIdDispenser = Volatile.Read(ref s_idDispenser);
219var updatedIdDispenser = priorIdDispenser.AllocateId(out id);
220var interlockedResult = Interlocked.CompareExchange(ref s_idDispenser, updatedIdDispenser, priorIdDispenser);
238var priorIdDispenser = Volatile.Read(ref s_idDispenser);
241var updatedIdDispenser = s_idDispenser.RecycleId(id);
242var interlockedResult = Interlocked.CompareExchange(ref s_idDispenser, updatedIdDispenser, priorIdDispenser);