public Deadlock() { TestTimedOutTestsListener.Deadlock.DeadlockThread[] dThreads = new TestTimedOutTestsListener.Deadlock.DeadlockThread [6]; TestTimedOutTestsListener.Deadlock.Monitor a = new TestTimedOutTestsListener.Deadlock.Monitor (this, "a"); TestTimedOutTestsListener.Deadlock.Monitor b = new TestTimedOutTestsListener.Deadlock.Monitor (this, "b"); TestTimedOutTestsListener.Deadlock.Monitor c = new TestTimedOutTestsListener.Deadlock.Monitor (this, "c"); dThreads[0] = new TestTimedOutTestsListener.Deadlock.DeadlockThread(this, "MThread-1" , a, b); dThreads[1] = new TestTimedOutTestsListener.Deadlock.DeadlockThread(this, "MThread-2" , b, c); dThreads[2] = new TestTimedOutTestsListener.Deadlock.DeadlockThread(this, "MThread-3" , c, a); Lock d = new ReentrantLock(); Lock e = new ReentrantLock(); Lock f = new ReentrantLock(); dThreads[3] = new TestTimedOutTestsListener.Deadlock.DeadlockThread(this, "SThread-4" , d, e); dThreads[4] = new TestTimedOutTestsListener.Deadlock.DeadlockThread(this, "SThread-5" , e, f); dThreads[5] = new TestTimedOutTestsListener.Deadlock.DeadlockThread(this, "SThread-6" , f, d); // make them daemon threads so that the test will exit for (int i = 0; i < 6; i++) { dThreads[i].SetDaemon(true); dThreads[i].Start(); } }
internal DeadlockThread(Deadlock _enclosing, string name, TestTimedOutTestsListener.Deadlock.Monitor mon1, TestTimedOutTestsListener.Deadlock.Monitor mon2) : base(name) { this._enclosing = _enclosing; this.mon1 = mon1; this.mon2 = mon2; this.useSync = false; }