private void initTest(ThreadLocalRunner[] runners) { Thread[] threads = new Thread[runners.Length]; // build threads for (int i = 0; i < threads.Length; ++i) { threads[i] = new Thread(runners[i].threadStart); } // kick-off each thread foreach (Thread thread in threads) { thread.Start(); Thread.Sleep(200); } // foreach (Thread thread in threads) { lock (thread) { Monitor.PulseAll(thread); } } foreach (Thread thread in threads) { thread.Join(); } }
public void CyclicDependencyWithThreadSafeGuard() { ThreadLocalRunner[] runner = new ThreadLocalRunner[3]; for (int i = 0; i < runner.Length; ++i) { runner[i] = new ThreadLocalRunner(); } initTest(runner); for (int i = 0; i < runner.Length; ++i) { Assert.IsNull((runner[i]).exception); } }
public void CyclicDependencyWithThreadSafeGuard() { ThreadLocalRunner[] runner = new ThreadLocalRunner[3]; for(int i = 0; i < runner.Length; ++i) { runner[i] = new ThreadLocalRunner(); } initTest(runner); for(int i = 0; i < runner.Length; ++i) { Assert.IsNull((runner[i]).exception); } }