public void ThreadMethodToRun(object obj) { int count = 1; int searchItem = 10; int num = 0; Monitor.Enter(this); try { MyWrapperClass parameter = (MyWrapperClass)obj; //Console.WriteLine("parameter.start = " + parameter.start + " , parameter.end = " + (parameter.end)); for (int i = parameter.start; i < parameter.end; i++) { if (parameter.mylist[i] == searchItem) { total++; } } //total += num; } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Monitor.Exit(this); } }
public void ThreadMethodToRun(object obj) { int count = 1; int searchItem = 10; int num = 0; MyWrapperClass parameter = (MyWrapperClass)obj; //Console.WriteLine("parameter.start = " + parameter.start + " , parameter.end = " + (parameter.end)); for (int i = parameter.start; i < parameter.end; i++) { if (parameter.mylist[i] == searchItem) { num++; } } total += num; }
public static void ThreadSearching(List <int> mylist) { Stopwatch stopwatch = Stopwatch.StartNew(); int tempstart = 0; int avg = (int)mylist.Count / 5; for (int i = 0; i < 5; i++) { int tempEnd = (int)(tempstart + avg); MyWrapperClass parameter = new MyWrapperClass(tempstart, tempEnd, mylist); // get parameter value tempstart += avg; Thread thread = new Thread(new ParameterizedThreadStart(parameter.ThreadMethodToRun)); thread.Start(parameter); Console.WriteLine("Total : " + parameter.getTotal()); } stopwatch.Stop(); Console.WriteLine("Thread total time = " + stopwatch.ElapsedMilliseconds); }
public void SequentialThreadMethodToRun(object obj) { Monitor.Enter(this); try { int count = 1; int searchItem = 10; int num = 0; MyWrapperClass parameter = (MyWrapperClass)obj; //Console.WriteLine("parameter.start = " + parameter.start + " , parameter.end = " + (parameter.end)); for (int i = parameter.start; i < parameter.end; i++) { if (parameter.mylist[i] == searchItem) { num++; } } total += num; } finally { Monitor.Exit(this); } }