Beispiel #1
0
        private int FindMinimalVertexParallel()
        {
            InitHandlers();

            indexes = new int[threadsCount];

            for (int threadNumber = 0; threadNumber < threadsCount; threadNumber++)
            {
                var job = new JobToDo()
                {
                    Min = true, PartNumber = threadNumber
                };
                threadPool.EnqueueTask(job);
            }

            WaitHandle.WaitAll(waitHandlers);
            ResetHandlers();

            var minIndex = indexes[0];
            var min      = distances[minIndex];

            for (int index = 1; index < threadsCount; index++)
            {
                var vertex = indexes[index];
                var val    = distances[vertex];
                if (val < min)
                {
                    min      = val;
                    minIndex = vertex;
                }
            }

            return(minIndex);
        }
Beispiel #2
0
    DataThread ScheduleThread(DataThread g, JobToDo p)
    {
        g.job.x     = p.x;
        g.job.y     = p.y;
        g.job.z     = p.z;
        g.jobHandle = g.job.Schedule();

        return(g);
    }
 private static void Job_RemoveDirectory(JobToDo job)
 {
     try
     {
         Directory.Delete(Conversions.ToString(job.Params[0]), Conversions.ToBoolean(job.Params[1]));
     }
     catch (Exception)
     {
     }
 }
 private static void Job_RemoveFile(JobToDo job)
 {
     try
     {
         File.Delete(Conversions.ToString(job.Params[0]));
     }
     catch (Exception)
     {
     }
 }
Beispiel #5
0
    DataThread ScheduleThread(DataThread g, JobToDo c)
    {
        g.job.x = c.x;
        g.job.y = c.y;
        g.job.z = c.z;
        g.job.data.CopyFrom(c.data);
        g.jobHandle = g.job.Schedule();

        return(g);
    }
Beispiel #6
0
        private void ExploreEdgesParallel()
        {
            InitHandlers();

            for (int threadNumber = 0; threadNumber < threadsCount; threadNumber++)
            {
                var job = new JobToDo()
                {
                    Explore = true, PartNumber = threadNumber
                };
                threadPool.EnqueueTask(job);
            }
        }