Пример #1
0
        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
            });
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
                }
            }
        }