예제 #1
0
파일: thread09.cs 프로젝트: z77ma/runtime
    public static void DelegateTest <U>()
    {
        ThreadStart d = new ThreadStart(new Gen <T>().Target <U>);


        d();
        Test_thread09.Eval(Test_thread09.Xcounter == 1);
        Test_thread09.Xcounter = 0;
    }
예제 #2
0
파일: thread09.cs 프로젝트: z77ma/runtime
    public void Target <U>(object p)
    {
        //dummy line to avoid warnings
        Test_thread09.Eval(typeof(U) != p.GetType());
        ManualResetEvent evt = (ManualResetEvent)p;

        Interlocked.Increment(ref Test_thread09.Xcounter);
        evt.Set();
    }
예제 #3
0
파일: thread09.cs 프로젝트: z77ma/runtime
	public static void ThreadPoolTest<U>()
	{
		ManualResetEvent evt = new ManualResetEvent(false);		
		
		Gen<T> obj = new Gen<T>();

		TimerCallback tcb = new TimerCallback(obj.Target<U>);
		Timer timer = new Timer(tcb,evt,Test_thread09.delay,Test_thread09.period);
	
		evt.WaitOne();
		timer.Dispose();
		Test_thread09.Eval(Test_thread09.Xcounter>=Test_thread09.nThreads);
		Test_thread09.Xcounter = 0;
	}
예제 #4
0
    public static void ThreadPoolTest <U>()
    {
        Thread[] threads = new Thread[Test_thread09.nThreads];
        Gen <T>  obj     = new Gen <T>();

        for (int i = 0; i < Test_thread09.nThreads; i++)
        {
            threads[i] = new Thread(new ThreadStart(obj.Target <U>));
            threads[i].Start();
        }

        for (int i = 0; i < Test_thread09.nThreads; i++)
        {
            threads[i].Join();
        }

        Test_thread09.Eval(Test_thread09.Xcounter == Test_thread09.nThreads);
        Test_thread09.Xcounter = 0;
    }
예제 #5
0
파일: thread09.cs 프로젝트: z77ma/runtime
    public static void ThreadPoolTest <U>()
    {
        ManualResetEvent[] evts = new ManualResetEvent[Test_thread09.nThreads];
        WaitHandle[]       hdls = new WaitHandle[Test_thread09.nThreads];

        for (int i = 0; i < Test_thread09.nThreads; i++)
        {
            evts[i] = new ManualResetEvent(false);
            hdls[i] = (WaitHandle)evts[i];
        }

        Gen <T> obj = new Gen <T>();

        for (int i = 0; i < Test_thread09.nThreads; i++)
        {
            WaitCallback cb = new WaitCallback(obj.Target <U>);
            ThreadPool.QueueUserWorkItem(cb, evts[i]);
        }

        WaitHandle.WaitAll(hdls);
        Test_thread09.Eval(Test_thread09.Xcounter == Test_thread09.nThreads);
        Test_thread09.Xcounter = 0;
    }
예제 #6
0
 public void Target <U>()
 {
     //dummy line to avoid warnings
     Test_thread09.Eval(typeof(U) != null);
     Interlocked.Increment(ref Test_thread09.Xcounter);
 }