Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ TrySteal()

bool System.Collections.Concurrent.ConcurrentBag< T >.TrySteal ( [MaybeNullWhen(false)] out T result,
bool take )
inlineprivate

Definition at line 487 of file ConcurrentBag.cs.

488 {
489 if (CDSCollectionETWBCLProvider.Log.IsEnabled())
490 {
491 if (take)
492 {
493 CDSCollectionETWBCLProvider.Log.ConcurrentBag_TryTakeSteals();
494 }
495 else
496 {
497 CDSCollectionETWBCLProvider.Log.ConcurrentBag_TryPeekSteals();
498 }
499 }
500 while (true)
501 {
504 bool num2;
506 {
507 if (TryStealFromTo(currentThreadWorkStealingQueue._nextQueue, null, out result, take))
508 {
509 goto IL_0078;
510 }
512 }
513 else
514 {
516 }
517 if (!num2)
518 {
520 {
521 break;
522 }
523 continue;
524 }
525 goto IL_0078;
526 IL_0078:
527 return true;
528 }
529 return false;
530 }
WorkStealingQueue GetCurrentThreadWorkStealingQueue(bool forceCreate)
bool TryStealFromTo(WorkStealingQueue startInclusive, WorkStealingQueue endExclusive, [MaybeNullWhen(false)] out T result, bool take)
volatile WorkStealingQueue _workStealingQueues
static long Read(ref long location)

References System.Collections.Concurrent.ConcurrentBag< T >._emptyToNonEmptyListTransitionCount, System.Collections.Concurrent.ConcurrentBag< T >._workStealingQueues, System.Collections.Concurrent.ConcurrentBag< T >.GetCurrentThreadWorkStealingQueue(), System.Collections.Concurrent.CDSCollectionETWBCLProvider.Log, System.Threading.Interlocked.Read(), and System.Collections.Concurrent.ConcurrentBag< T >.TryStealFromTo().

Referenced by System.Collections.Concurrent.ConcurrentBag< T >.TryPeek(), and System.Collections.Concurrent.ConcurrentBag< T >.TryTake().