Using Threads namespace in .net framework we can trigger the concurrent HTTP requests to server. True concurrency can be achieved only when there is more than 1 CPU otherwise it's only a virtual thing that is achieved using swtiching b/w each threads by a single CPU.
A different note about Threading: Threading is useful only when the operation task involved in the threading method is I/O bound or wait for other resources involved. If it's only computational then Threading leverage no advantage & can backfire since there is cost for context switching b/w each threads.
A different note about Threading: Threading is useful only when the operation task involved in the threading method is I/O bound or wait for other resources involved. If it's only computational then Threading leverage no advantage & can backfire since there is cost for context switching b/w each threads.
static void Main(string[] args) {while (true) { List<Thread> lstThreads = new List<Thread>(); /* Thread objThread1 = new Thread(new ParameterizedThreadStart(DeadLockWithHotelDescriptiveContentNotifRQUpdate)); lstThreads.Add(objThread1); Thread objThread2 = new Thread(new ParameterizedThreadStart(DeadLockWithHotelDescriptiveContentNotifRQUpdate)); lstThreads.Add(objThread2); Thread objThread3 = new Thread(new ParameterizedThreadStart(DeadLockWithHotelDescriptiveContentNotifRQUpdate)); lstThreads.Add(objThread3); Thread objThread4 = new Thread(new ParameterizedThreadStart(DeadLockWithHotelDescriptiveContentNotifRQUpdate)); lstThreads.Add(objThread4); string fileLocation = @"D:\Asif\JIRA\NEO\Interface Migration\Sprint14\NEORND-3630\Meera\DAO Error\xml4DCRQ.xml"; objThread1.Start(File.ReadAllText(string.Format("{0}\\{1}", fileLocation, "RTAV_Local_Series1.xml"))); objThread2.Start(File.ReadAllText(string.Format("{0}\\{1}", fileLocation, "RTAV_Local_Series2.xml"))); objThread3.Start(File.ReadAllText(string.Format("{0}\\{1}", fileLocation, "RTAV_Local_Series3.xml"))); objThread4.Start(File.ReadAllText(string.Format("{0}\\{1}", fileLocation, "RTAV_Local_Series4.xml"))); */ string fileLocation = @"D:\JIRA\NEO\Sundarbans\Sprint20\NEORND-7568 [Search Connector] Load test optimized codebase\AvailRQMultiPropertySearchRQ.xml"; for (int i = 1; i <= 30; i++) { Thread objThread = new Thread(new ParameterizedThreadStart(DeadLockWithHotelDescriptiveContentNotifRQUpdate)); lstThreads.Add(objThread); objThread.Start(File.ReadAllText(fileLocation)); } int ctr = 1; foreach (var thread in lstThreads) { thread.Join(); if (ctr == lstThreads.Count) { Console.WriteLine("All HDC threads finished executing"); goto EndWhile; } ctr++; } } EndWhile: Console.WriteLine("Press Any key to exit"); Console.ReadLine(); } static void DeadLockWithHotelDescriptiveContentNotifRQUpdate(object payload) { string xmlPayload = (string)payload; string response_text = string.Empty; try { System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; System.Net.ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificate; //string url = "https://hotfix.hbsconnect.com/app/dm/xml/xml4test"; string url = "http://127.0.0.1:5000/Search"; //string url = "http://localhost/app/dm/xml/xml4test"; HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create(url); //-------GETTING WEBPROXY OF LOCAL MACHINE==========// WebProxy proxy = (WebProxy)WebProxy.GetDefaultProxy(); if (proxy.Address != null) { proxy.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials; WebRequest.DefaultWebProxy = new System.Net.WebProxy(proxy.Address, proxy.BypassProxyOnLocal, proxy.BypassList, proxy.Credentials); } //request.Proxy = proxy; //----PROXY SET UP===========// byte[] bytes = Encoding.UTF8.GetBytes(xmlPayload); request.Method = "POST"; request.Accept = "*/*"; request.Timeout = 360000; //=6mnts request.ContentType = "text/xml"; // text/plain request.KeepAlive = false; request.ContentLength = bytes.Length; request.ProtocolVersion = HttpVersion.Version10; //request.ServicePoint.Expect100Continue = true; Stream stream = request.GetRequestStream(); stream.Write(bytes, 0, bytes.Length); stream.Flush(); using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) { /* Stream responseStream = response.GetResponseStream(); StreamReader Reader = new StreamReader(responseStream, Encoding.Default); response_text = Reader.ReadToEnd(); */ Stream response_stream = response.GetResponseStream(); byte[] byteStream = new byte[512]; StringBuilder sbResponse = new StringBuilder(); System.Text.Encoding utfEncode = System.Text.Encoding.GetEncoding("utf-8"); int byteCount = response_stream.Read(byteStream, 0, 512); while (byteCount > 0) { sbResponse.Append(utfEncode.GetString(byteStream, 0, byteCount)); try { byteCount = response_stream.Read(byteStream, 0, 512); } catch { //Micros don't terminate their output stream correctly and just close the connection resulting in an exception at our end byteCount = 0; } } response_text = sbResponse.ToString(); if (response_text == string.Empty) response_text = response.StatusCode.ToString(); } stream.Close(); } catch (WebException webEx) { //throw webEx; } catch (Exception ex) { //throw ex; } }
0 comments:
Post a Comment