public void Target <U>(object p) { //dummy line to avoid warnings Test_thread16.Eval(typeof(U) != p.GetType()); ManualResetEvent evt = (ManualResetEvent)p; Interlocked.Increment(ref Test_thread16.Xcounter); evt.Set(); }
public static void DelegateTest <U>() { IGen obj = new Gen(); ThreadStart d = new ThreadStart(obj.Target <U>); d(); Test_thread16.Eval(Test_thread16.Xcounter == 1); Test_thread16.Xcounter = 0; }
public static void ThreadPoolTest <U>() { ManualResetEvent evt = new ManualResetEvent(false); IGen obj = new Gen(); TimerCallback tcb = new TimerCallback(obj.Target <U>); Timer timer = new Timer(tcb, evt, Test_thread16.delay, Test_thread16.period); evt.WaitOne(); timer.Dispose(); Test_thread16.Eval(Test_thread16.Xcounter >= Test_thread16.nThreads); Test_thread16.Xcounter = 0; }
public static void ThreadPoolTest <U>() { Thread[] threads = new Thread[Test_thread16.nThreads]; IGen obj = new Gen(); for (int i = 0; i < Test_thread16.nThreads; i++) { threads[i] = new Thread(new ThreadStart(obj.Target <U>)); threads[i].Start(); } for (int i = 0; i < Test_thread16.nThreads; i++) { threads[i].Join(); } Test_thread16.Eval(Test_thread16.Xcounter == Test_thread16.nThreads); Test_thread16.Xcounter = 0; }
public static void ThreadPoolTest <U>() { ManualResetEvent[] evts = new ManualResetEvent[Test_thread16.nThreads]; WaitHandle[] hdls = new WaitHandle[Test_thread16.nThreads]; for (int i = 0; i < Test_thread16.nThreads; i++) { evts[i] = new ManualResetEvent(false); hdls[i] = (WaitHandle)evts[i]; } IGen obj = new Gen(); for (int i = 0; i < Test_thread16.nThreads; i++) { WaitCallback cb = new WaitCallback(obj.Target <U>); ThreadPool.QueueUserWorkItem(cb, evts[i]); } WaitHandle.WaitAll(hdls); Test_thread16.Eval(Test_thread16.Xcounter == Test_thread16.nThreads); Test_thread16.Xcounter = 0; }
public void Target <U>() { //dummy line to avoid warnings Test_thread16.Eval(typeof(U) != null); Interlocked.Increment(ref Test_thread16.Xcounter); }