This is typically called in a loop, and may change in behavior based on the number of times a SpinWait.SpinOnce has been called thus far on this instance. Each spin results in the Thread.SpinWait(int) method being called. A count is kept of the number of times SpinWait.SpinOnce is called, and after a threshold count is reached, the Thread.Yield method is called.