Under high concurrency, current MontonicUlidRng implementation can cause duplicate Ulids to be generated.
Although the GetRandomBytes methods uses a lock to increment the random number, it returns the reference to the original byte[] and during high concurrency situations it could lead to exact same values to be read from the returned byte[].
Under high concurrency, current MontonicUlidRng implementation can cause duplicate Ulids to be generated. Although the GetRandomBytes methods uses a lock to increment the random number, it returns the reference to the original byte[] and during high concurrency situations it could lead to exact same values to be read from the returned byte[].