public IEnumerator TestStaggeredMonoRunner()
        {
            yield return(null);

            //careful, runners can be garbage collected if they are not referenced somewhere and the
            //framework does not keep a reference
            using (var staggeredMonoRunner = new StaggeredMonoRunner("staggered", 4))
            {
                ValueObject val = new ValueObject();
                for (int i = 0; i < 16; i++)
                {
                    new SimpleEnumeratorClassRef(val).RunOnScheduler(staggeredMonoRunner);
                }

                Assert.That(staggeredMonoRunner.numberOfQueuedTasks, Is.EqualTo(16));
                staggeredMonoRunner.Step();

                Assert.That(staggeredMonoRunner.numberOfRunningTasks, Is.EqualTo(12));
                staggeredMonoRunner.Step();

                Assert.That(staggeredMonoRunner.numberOfRunningTasks, Is.EqualTo(8));
                staggeredMonoRunner.Step();

                Assert.That(staggeredMonoRunner.numberOfRunningTasks, Is.EqualTo(4));
                staggeredMonoRunner.Step();

                Assert.That(staggeredMonoRunner.numberOfRunningTasks, Is.EqualTo(0));

                Assert.That(val.counter, Is.EqualTo(16));
            }
        }
Esempio n. 2
0
    void OnEnable()
    {
        UnityConsole.Clear();

        _runner = new StaggeredMonoRunner("StaggeredRunner", MaxTasksPerFrame);

        for (int i = 0; i < 300; i++)
        {
            TaskRunner.Instance.RunOnSchedule(_runner, PrintFrame);
        }
    }
    void OnEnable()
    {
        UnityConsole.Clear();

        _runner = new StaggeredMonoRunner("StaggeredRunner", MaxTasksPerFrame);

        for (int i = 0; i < 300; i++)
        {
            PrintFrame().Run(_runner);
        }
    }