1234567891011121314151617181920212223242526272829303132333435 |
- // Copyright (c) .NET Foundation. All rights reserved.
- // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
- // Copyright (c) .NET Foundation. All rights reserved.
- // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
- using System;
- using System.Runtime.CompilerServices;
- using System.Threading;
- namespace Benchmarks.Data
- {
- public class ConcurrentRandom
- {
- private static int nextSeed = 0;
- // Random isn't thread safe
- [ThreadStatic]
- private static Random _random;
- private static Random Random => _random ?? CreateRandom();
- [MethodImpl(MethodImplOptions.NoInlining)]
- private static Random CreateRandom()
- {
- _random = new Random(Interlocked.Increment(ref nextSeed));
- return _random;
- }
- public int Next(int minValue, int maxValue)
- {
- return Random.Next(minValue, maxValue);
- }
- }
- }
|