public override async Task <PiReply> Estimate(PiRequest request, ServerCallContext context) { var parallelPiEstimation = new ParallelForEstimationOfPi(NumberOfCores); var piEstimation = await parallelPiEstimation.ParallelPi(request.NumberOfSteps); return(new PiReply() { Estimation = piEstimation }); }
public async Task <IActionResult> Get(long numberOfSteps) { int numberOfCores = Environment.ProcessorCount; var piEstimation = new ParallelForEstimationOfPi(numberOfCores); // Creates a new model of Pi /Models/Pi(For Json serialization) var pi = new PiEstimation { MyPi = await piEstimation.ParallelPi(numberOfSteps) }; //jsonReturn. return(Ok(pi)); }
public static async void ReadCallback(IAsyncResult ar) { String content = String.Empty; // Retrieve the state object and the handler socket // from the asynchronous state object. StateObject state = (StateObject)ar.AsyncState; Socket handler = state.workSocket; // Read data from the client socket. int bytesRead = handler.EndReceive(ar); if (bytesRead > 0) { // There might be more data, so store the data received so far. state.sb.Append(Encoding.ASCII.GetString( state.buffer, 0, bytesRead)); // Check for end-of-file tag. If it is not there, read // more data. content = state.sb.ToString(); if (content.IndexOf("<EOF>") > -1) { // All the data has been read from the // client. Display it on the console. Console.WriteLine("Read {0} bytes from socket. \n Data : {1}", content.Length, content); // Estimate pi // Get number of steps. Sent by Client long numberOfSteps = Convert.ToInt64(content); var estimatePi = new ParallelForEstimationOfPi(NumberOfCores); var pi = await estimatePi.ParallelPi(numberOfSteps); Console.WriteLine($"The estimation of Pi with {numberOfSteps} steps is: {pi}"); // Echo the estimated pi back to client. Send(handler, pi.ToString(CultureInfo.InvariantCulture)); } else { // Not all data received. Get more. handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback), state); } } }