public virtual void TestSetMultiThreaded() { SetOnce<int?> set = new SetOnce<int?>(); SetOnceThread[] threads = new SetOnceThread[10]; Random random = Random(); for (int i = 0; i < threads.Length; i++) { threads[i] = new SetOnceThread(random); threads[i].Name = "t-" + (i + 1); threads[i].Set = set; } foreach (ThreadClass t in threads) { t.Start(); } foreach (ThreadClass t in threads) { t.Join(); } foreach (SetOnceThread t in threads) { if (t.Success) { int expectedVal = Convert.ToInt32(t.Name.Substring(2)); Assert.AreEqual(expectedVal, t.Set.Get(), "thread " + t.Name); } } }
public virtual void TestSetMultiThreaded() { SetOnce <Integer> set = new SetOnce <Integer>(); SetOnceThread[] threads = new SetOnceThread[10]; Random random = Random; for (int i = 0; i < threads.Length; i++) { threads[i] = new SetOnceThread(random); threads[i].Name = "t-" + (i + 1); threads[i].set = set; } foreach (ThreadJob t in threads) { t.Start(); } foreach (ThreadJob t in threads) { t.Join(); } foreach (SetOnceThread t in threads) { if (t.success) { int expectedVal = Convert.ToInt32(t.Name.Substring(2)); Assert.AreEqual(expectedVal, t.set.Get().value, "thread " + t.Name); } } }