Beispiel #1
0
        public TestThreads(IRelaTest test, IScheduler scheduler)
        {
            var numThreads = test.ThreadEntries.Count;

            _threads      = new Thread[numThreads];
            _threadStates = new ThreadState[numThreads];
            _threadLocks  = new Object[numThreads];
            _scheduler    = scheduler;
            CreateThreads(test.ThreadEntries);
        }
Beispiel #2
0
        public void RunTest(IRelaTest test, IScheduler scheduler, ulong liveLockLimit)
        {
            NumThreads     = test.ThreadEntries.Count;
            _scheduler     = scheduler;
            LiveLockLimit  = liveLockLimit;
            TestFailed     = false;
            _shadowThreads = new ShadowThread[NumThreads];
            _eventLog      = new EventLog(NumThreads);
            _testStarted   = false;
            SequentiallyConsistentFence = new VectorClock(NumThreads);
            ExecutionLength             = 0;

            for (int i = 0; i < NumThreads; ++i)
            {
                _shadowThreads[i] = new ShadowThread(i, NumThreads);
            }

            _testThreads = new TestThreads(test, _scheduler);
            test.OnBegin();
            _testStarted = true;
            _testThreads.WakeThread();
            _testThreads.Join();
            test.OnFinished();
        }
Beispiel #3
0
 public void RunTest(IRelaTest test, IScheduler scheduler, ulong liveLockLimit) // Maybe re-name to RunTestOnce
 => TE.RunTest(test, scheduler, liveLockLimit);