public virtual bool ReadCommand(out string cmd) { if (m_startupCommands != null) { string c = (string)m_startupCommands.Dequeue(); if (m_startupCommands.Count == 0) { m_startupCommands = null; } cmd = c; WriteOutput(MDbgOutputConstants.StdOutput, c + "\r\n"); return(true); } retry: m_isConsoleBreakHandlerExecuted = false; WriteMdbgPrompt(true); //cmd = Console.ReadLine(); cmd = wr.Read(); if (cmd == null) { Thread.Sleep(100); if (m_isConsoleBreakHandlerExecuted) { // means we have not hit an EOF. goto retry; } } //return true; return(cmd == null ? false : true); }
private static void MultiThreaded(string[] args) { MPI.Environment.Run(ref args, communicator => { var sorter = new MPIQuickSort(communicator); var isMaster = communicator.Rank == 0; if (isMaster) { var inputFile = args[0]; var outputFile = args[1]; var array = ReaderWriter.Read(inputFile); IList <int> result = null; using (var performanceCounter = new PerformanceCounter($"Execution time: ")) { result = sorter.ParallelSort(array, 0, array.Count - 1); } ReaderWriter.Write(outputFile, result); //Console.WriteLine($"Verify result: {Verify(result, inputFile)}"); } else { sorter.WorkerLoop(); } }); }
void ISynchronizer.ReadDataFromStorage() { readerWriter.Read(loadedData => { if (loadedData == null) { return; } else { if (cashData == null) { cashData = loadedData; T combinedData = CombineData(model.GetData(), loadedData); model.SetData(combinedData); return; } else { if (cashData.Equals(loadedData)) { return; } else { ChooseData(loadedData, choosedData => model.SetData(choosedData)); return; } } } }); }
private static void SingleThreaded(string[] args) { var inputFile = args[0]; var outputFile = args[1]; var array = ReaderWriter.Read(inputFile); QuickSort.Sort(array, 0, array.Count - 1); ReaderWriter.Write(outputFile, array); }
private static bool Verify(IList <int> result, string inputFile) { QuickSort.PivotType = PivotType.Middle; var array = ReaderWriter.Read(inputFile); QuickSort.Sort(array, 0, array.Count - 1); QuickSort.PivotType = PivotType.Middle; var flag = true; for (int index = 0; index < result.Count; index++) { //Console.WriteLine($"Index {index}: {result[index]} ({array[index]})"); if (result[index] != array[index]) { flag = false; } } return(flag); }
private static void MultiThreadedVol2(string[] args) { MPI.Environment.Run(ref args, communicator => { //Initialize var inputFile = args[0]; var outputFile = args[1]; var sorter = new QSorter(communicator); var isManager = communicator.Rank == 0; int[] result = null; //Send array parts to workers if (isManager) { var array = ReaderWriter.Read(inputFile); var qsArray = new QSArray(array); sorter.InitializeWithData(qsArray); } else { sorter.InitializeWithData(null); } //Parallel QSort using (var performanceCounter = new PerformanceCounter($"Execution time [{communicator.Rank}]: ")) { while (true) { if (sorter.LastInGroup) { sorter.Sort(); break; } sorter.PivotBroadcast(); sorter.PartitionAndPartsExchange(); sorter.GroupHalfToSubGroup(); } sorter.SendWorkResult(); //Collect all parts together if (isManager) { result = sorter.MergeDataFromWorkers(); } } //Write to output file if (isManager) { var list = result.ToList(); ReaderWriter.Write(outputFile, list); //Console.WriteLine($"Verified: {Verify(list, inputFile)}"); } }); }