當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


C# Queue.IsSynchronized用法及代碼示例


使用此屬性可獲得一個值,該值指示是否同步對隊列的訪問(線程安全)。

用法:

public virtual bool IsSynchronized { get; }

屬性值:如果對隊列的訪問已同步(線程安全),則此屬性返回true,否則返回false。默認值為false。


以下示例程序旨在說明上述屬性的用法:

範例1:

// C# code to illustrate the 
// Queue.IsSynchronized Property 
using System; 
using System.Collections; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a Queue 
        Queue myQueue = new Queue(); 
  
        // Inserting the elements into the Queue 
        myQueue.Enqueue("C"); 
        myQueue.Enqueue("C++"); 
        myQueue.Enqueue("Java"); 
        myQueue.Enqueue("C#"); 
        myQueue.Enqueue("HTML"); 
        myQueue.Enqueue("CSS"); 
  
        // Creates a synchronized 
        // wrapper around the Queue 
        Queue sq = Queue.Synchronized(myQueue); 
  
        // Displays the synchronization 
        // status of both Queue 
        Console.WriteLine("myQueue is {0}.", myQueue.IsSynchronized ? 
                                "Synchronized" :"Not Synchronized"); 
  
        Console.WriteLine("sq is {0}.", sq.IsSynchronized ?  
                       "Synchronized" :"Not Synchronized"); 
    } 
}
輸出:
myQueue is Not Synchronized.
sq is Synchronized.

範例2:

// C# code to check if Queue 
// Is Synchronized or not 
using System; 
using System.Collections; 
  
class GFG { 
  
    // Driver code 
    public static void Main() 
    { 
  
        // Creating a Queue 
        Queue myQueue = new Queue(); 
  
        // Inserting the elements into the Queue 
        myQueue.Enqueue(1); 
        myQueue.Enqueue(2); 
        myQueue.Enqueue(3); 
        myQueue.Enqueue(4); 
  
        // the default is false for 
        // IsSynchronized property 
        Console.WriteLine(myQueue.IsSynchronized); 
    } 
}
輸出:
False

注意:

  • 檢索此屬性的值是O(1)操作。
  • 為了保證Queue的線程安全,所有操作必須通過Synchronized方法返回的包裝器完成。
  • 通過集合進行枚舉本質上不是線程安全的過程。即使同步了集合,其他線程仍可以修改集合,這會導致枚舉器引發異常。

參考:



相關用法


注:本文由純淨天空篩選整理自Kirti_Mangal大神的英文原創作品 Queue.IsSynchronized Property in C#。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。