Beispiel #1
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();
        }