public void MtTest() { var gen = new UlidGenTS(); var cl = new ConcurrentStack <Ulid>(); const int c = 10_000_000; var t1 = new Thread( () => { var l = new List <Ulid>(); for (var i = 0; i < c; i++) { l.Add(gen.Generate()); } cl.PushRange(l.ToArray()); } ); var t2 = new Thread( () => { var l = new List <Ulid>(); for (var i = 0; i < c; i++) { l.Add(gen.Generate()); } cl.PushRange(l.ToArray()); } ); var t3 = new Thread( () => { var l = new List <Ulid>(); for (var i = 0; i < c; i++) { l.Add(gen.Generate()); } cl.PushRange(l.ToArray()); } ); t1.Start(); t2.Start(); t3.Start(); t1.Join(); t2.Join(); t3.Join(); cl.Count .ShouldBe(c * 3, "Threads PushRange failed. Maybe some threads failed execution"); cl.Distinct() .Count() .ShouldBe(c * 3, "Some id's duplicated!"); }
public void Setup() { _myUlidGen = new UlidGen(); _myUlidGenTS = new UlidGenTS(); }