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); }
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) { } }
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); }
private void ExploreEdgesParallel() { InitHandlers(); for (int threadNumber = 0; threadNumber < threadsCount; threadNumber++) { var job = new JobToDo() { Explore = true, PartNumber = threadNumber }; threadPool.EnqueueTask(job); } }