示例#1
0
        public static HRTimer CreateAndStart()
        {
            HRTimer hr = new HRTimer();

            hr.StartWatch();
            return(hr);
        }
示例#2
0
        private void SendResponsesProc()
        {
            const float timeToCall = 1000/WORLD_DELAY_BETWEEN_FRAMES_MS - 1;

            HRTimer timer = new HRTimer();
            DateTime opTime = DateTime.UtcNow;
            while (!_terminating)
            {
                if (_unsentResponsesAvailable)
                {
                    timer.StartWatch();
                    Pair<int, BaseResponse>[] responses;
                    lock (_responsesPool)
                    {
                        responses = _responses.ToArray();
                        _responses.Clear();
                        _unsentResponsesAvailable = false;
                    }
                    int cnt = responses.Length;
                    for (int i = 0; i < cnt; i++)
//                    Parallel.For(0, cnt, i => //!!!
                    {
                        int clientId;
                        Pair<int, BaseResponse> response = responses[i];
                        if (_playerClients.TryGetValue(response.Key, out clientId))
                        {
                            _netServer.Send(clientId, response.Value);
                        }
                        _responsesPool.Push(response);
//                    });
                    }
                    WriteLog(LogEventType.TCPResponsesSend, timer.StopWatch().ToString("F"));
                }

                DateTime curTime = DateTime.UtcNow;
                TimeSpan elapsed = curTime - opTime;
                int timeToIdle = (int) (timeToCall - elapsed.TotalMilliseconds);
                while (timeToIdle > 0)
                {
                    Thread.Sleep(timeToIdle/2);
                    elapsed = (curTime = DateTime.UtcNow) - opTime;
                    timeToIdle = (int) (timeToCall - elapsed.TotalMilliseconds);
                }

                elapsed = curTime - opTime;
                opTime = curTime;

                WriteLog(LogEventType.TCPResponsesProc, elapsed.TotalMilliseconds.ToString("F"));
            }
        }
示例#3
0
 public static HRTimer CreateAndStart()
 {
     HRTimer hr = new HRTimer();
     hr.StartWatch();
     return hr;
 }