示例#1
0
        public RenderPipelineTests(IAssert assert, IThreadControl threadControl, ITestAttachment testAttachment)
        {
            _assert         = assert;
            _testAttachment = testAttachment;

            threadControl.RequireTestsToRunOnMainThread();
        }
示例#2
0
 protected BranchedJob(IThreadControl parent)
 {
     this.threadControl = parent;
     this.threadControl.Add(this);
 }
示例#3
0
 protected ParallelJob(IThreadControl tcParent)
     : this()
 {
     this.ThreadControl = tcParent;
 }
示例#4
0
        public void PerformOptimization(IJob job, IThreadControlOptimization tcOptimization, IThreadControl tcParent)
        {
            foreach (Type wuType in job.WorkUnitTypes)
            {
                WorkUnitRequirements requirements = job.GetWorkUnitRequirements(wuType);

                if (wuType == typeof(ICPUWorkUnit))
                {
                    /* TODO: perform *real* CPU-level load balancing */
                    IWorkUnit selectedThread = tcParent.WorkUnits.FreeMost(wuType);
                    float     sureness       = 0.75f;

                    tcOptimization.Assign(selectedThread, job, sureness);
                }
                else
                {
                    /* assign to "default" with 0 sureness level.
                     * if a better optimizer will be smarter, it will override
                     * our "default" assign with a higher sureness number
                     */
                    tcOptimization.Assign(tcParent.WorkUnits.Default(wuType), job, 0);
                }
            }
        }