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

◆ GetAggregator() [1/2]

TAggregator System.Diagnostics.Metrics.AggregatorStore< TAggregator >.GetAggregator ( )
inline

Definition at line 85 of file AggregatorStore.cs.

86 {
88 while (true)
89 {
90 object stateUnion = _stateUnion;
91 if (stateUnion == null)
92 {
93 TAggregator val = _createAggregatorFunc();
94 if (val == null)
95 {
96 return val;
97 }
98 if (Interlocked.CompareExchange(ref _stateUnion, val, null) == null)
99 {
100 return val;
101 }
102 continue;
103 }
104 if (stateUnion is TAggregator result)
105 {
106 return result;
107 }
109 {
110 return multiSizeLabelNameDictionary.GetNoLabelAggregator(_createAggregatorFunc);
111 }
114 {
115 break;
116 }
117 }
118 return multiSizeLabelNameDictionary2.GetNoLabelAggregator(_createAggregatorFunc);
119 }
static int CompareExchange(ref int location1, int value, int comparand)
readonly Func< TAggregator > _createAggregatorFunc

References System.Diagnostics.Metrics.AggregatorStore< TAggregator >._createAggregatorFunc, System.Diagnostics.Metrics.AggregatorStore< TAggregator >._stateUnion, and System.Threading.Interlocked.CompareExchange().