public static void ParallelTableCountHTTP(List<ConfigState.ShardServer> shardServers, Int64 tableID, string startKey, string endKey) { var threads = new CounterThreadState[shardServers.Count]; var i = 0; foreach (var shardServer in shardServers) { var url = ConfigStateHelpers.GetShardServerURL(shardServer) + "count?tableID=" + tableID + "&startKey=" + startKey + "&endKey=" + endKey; System.Console.WriteLine(" Getting count on nodeID: " + shardServer.nodeID + ", tableID: " + tableID); threads[i] = new CounterThreadState(); threads[i].thread = new Thread(new ThreadStart(threads[i].CounterThreadFunc)); threads[i].shardServer = shardServer; threads[i].count = -1; threads[i].url = url; threads[i].thread.Start(); i += 1; } Int64 prevCount = -1; foreach (var thread in threads) { thread.thread.Join(); if (prevCount == -1) prevCount = thread.count; System.Console.WriteLine(" Result on " + thread.shardServer.nodeID + ": " + thread.count + ", elapsed: " + thread.elapsed.Seconds + "s, cps: " + (Int64)(thread.count / thread.elapsed.TotalMilliseconds) * 1000); Assert.IsTrue(thread.count != -1 && thread.count == prevCount); prevCount = thread.count; } }