Unity 多執行緒

TheAI發表於2017-12-19

1.Thread  多執行緒

Unity裡一般用於Socket連線,開一條執行緒接訊息。


2.Queue 佇列

物件的先進先出集合,可以規定特定型別的佇列集合,也可以什麼型別都存入佇列。

 Queue aaa = new Queue();   Queue<int> aaa = new Queue<int>(); 都是可以的。


3.lock 關鍵字

主要用於處理併發問題、鎖定獨佔物件。鎖定的必須是引用型別!




先寫一個執行緒類,不用繼承MonoBehaviour。

[csharp] view plain copy
  1. public class XianCheng  
  2. {  
  3.   
  4.     public Thread ThreadOne;  
  5.     public Thread ThreadTwo;  
  6.   
  7.     public Queue<int> queue = new Queue<int>(); //先進先出佇列  
  8.   
  9.     public void StartXianCheng()  
  10.     {  
  11.   
  12.         //執行緒1  
  13.         ThreadOne = new Thread(Count);       //執行緒開始方法  
  14.         ThreadOne.IsBackground = true;       //後臺執行緒會隨著主執行緒結束退出  
  15.       //ThreadOne.Name = "Xiancheng1";       //執行緒名字  
  16.         ThreadOne.Start();                   //開始執行緒  
  17.   
  18.         //執行緒2  
  19.         ThreadTwo = new Thread(Count);  
  20.         ThreadTwo.Start();  
  21.   
  22.     }  
  23.   
  24.   
  25.     public void Count()  
  26.     {  
  27.                                               //這裡可以註釋掉lock來測試  
  28.             lock (queue)                      //鎖定佇列,必須等待一條執行緒訪問完成後,別的執行緒才能使用  
  29.             {  
  30.                 queue.Enqueue(1);             //入隊  
  31.              // queue.Dequeue();              //出隊,返回佇列開始處的物件,並且刪除它!  
  32.   
  33.   
  34.                 Thread.Sleep(1000);           //執行緒休眠毫秒數  
  35.              // ThreadOne.Suspend();          //暫停執行緒  
  36.              // ThreadOne.Resume();           //繼續執行緒  
  37.   
  38.             }  
  39.      }  
  40.   
  41. }  

相關文章