public void FrequencyTest() { StatData data = new StatData(); for(var i = 0; i < 10000; i++) { Task.Factory.StartNew(() => { data.AddResponseFrequency(); }); } Thread.Sleep(5000); Assert.AreEqual(10000, data.ResponseFrequency); }
/// <summary> /// 响应统计 /// </summary> /// <param name="requestTime"></param> /// <param name="data"></param> /// <param name="responseTime"></param> /// <param name="hasError"></param> private static void ActualResponseStat(DateTime requestTime, MonitorData data, Int64 responseTime,bool hasError) { string requestTimeMinStr = requestTime.ToString("yyyyMMddHHmm"); ConcurrentDictionary<MonitorData, StatData> monitorData; if (dataContainer.TryGetValue(requestTimeMinStr, out monitorData)) { StatData statData; if (monitorData.TryGetValue(data, out statData)) { statData.AddResponseFrequency(); statData.UpdateResponseTime(responseTime); if (hasError) { statData.AddErrorResponseFrequency(); } } else { statData = new StatData(); statData.AddResponseFrequency(); statData.UpdateResponseTime(responseTime); if (hasError) { statData.AddErrorResponseFrequency(); } monitorData.TryAdd(data, statData); } } else { monitorData = new ConcurrentDictionary<MonitorData, StatData>(); var statData = new StatData(); statData.AddResponseFrequency(); statData.UpdateResponseTime(responseTime); if (hasError) { statData.AddErrorResponseFrequency(); } monitorData.TryAdd(data, statData); dataContainer.TryAdd(requestTimeMinStr, monitorData); } }