日期:2014-05-04  浏览次数:23030 次

“线程同步”的含义

 

        当一个进程启动了多个线程时,如果需要控制这些线程的推进顺序(比如A线程必须等待B和C线程执行完毕之后才能继续执行),则称这些线程需要进行“线程同步(thread synchronization)”。

        线程同步的道理虽然简单,但却是给多线程开发带来复杂性的根源之一。当线程同步不好时,有可能会出现一种特殊的情形——死锁(Dead Lock)

 

“死锁”的含义

 

        死锁表示系统进入了一个僵化状态,所有线程都没有执行完毕,但却谁也没法继续执行。究其根源,是因为“进程推进顺序不当”和“资源共享”。如例:

        1)进程推进顺序不当造成死锁

 

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Threading;  
  5.   
  6. namespace JoinLeadToDeadlock  
  7. {  
  8.     class Program  
  9.     {  
  10.         static Thread mainThread;  
  11.         static void Main(string[] args)  
  12.         {  
  13.             Console.WriteLine("主线程开始运行");  
  14.             mainThread = Thread.CurrentThread;  
  15.   
  16.             Thread ta = new Thread(new ThreadStart(ThreadAMethod));  
  17.             ta.Start();  //线程A开始执行   
  18.             Console.WriteLine("主线程等待线程A结束……");  
  19.             ta.Join();    //等待线程A结束   
  20.             Console.WriteLine("主线程退出");