C#多線程順序依賴執行控制


在開發過程中,經常需要多個任務並行的執行的場景,同時任務之間又需要先后依賴的關系。針對這樣的處理邏輯,通常會采用多線程的程序模型來實現。

 

比如A、B、C三個線程,A和B需要同時啟動,並行處理,且B需要依賴A完成,在進行后續的處理,C需要B完成后開始處理。

 

針對這個場景,使用了ThreadPool,ManualResetEvent等.net框架內置的類功能進行了模擬,實現代碼如下:

 

public class MultipleThreadCooperationSample

    {

        public static ManualResetEvent eventAB = new ManualResetEvent(false);

 

        public static ManualResetEvent eventBC = new ManualResetEvent(false);

 

        public static int Main(string[] args)

        {

            //so called thread A

            ThreadPool.QueueUserWorkItem(new WaitCallback(d =>

            {

                Console.WriteLine("Start A thread");

                Thread.Sleep(4000);

                eventAB.Set();

            }));

 

            //thread A

            ThreadPool.QueueUserWorkItem(new WaitCallback(d =>

            {

                Console.WriteLine("Start B thread and wait A thread to finised.");

                eventAB.WaitOne();

               

                Console.WriteLine("Process something within B thread");

 

                Thread.Sleep(4000);

                eventBC.Set();

            }));

 

 

            eventBC.WaitOne(Timeout.Infinite, true);

            //thread C

            ThreadPool.QueueUserWorkItem(new WaitCallback(d =>

            {

                Console.WriteLine("From C thread, everything is done.");

            }));

 

            Console.ReadLine();

 

            return 0;

        }

}

 

 

運行結果如下:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM