使用此屬性可獲得一個值,該值指示是否同步對隊列的訪問(線程安全)。
用法:
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方法返回的包裝器完成。
- 通過集合進行枚舉本質上不是線程安全的過程。即使同步了集合,其他線程仍可以修改集合,這會導致枚舉器引發異常。
參考:
相關用法
- C# Stack.IsSynchronized用法及代碼示例
- C# Stack.Count用法及代碼示例
- C# Queue.Count用法及代碼示例
- C# Dictionary.Item[]用法及代碼示例
- C# Dictionary.Values用法及代碼示例
- C# Dictionary.Keys用法及代碼示例
- C# Dictionary.Count用法及代碼示例
- C# SortedDictionary.Count用法及代碼示例
- C# SortedDictionary.Keys用法及代碼示例
- C# SortedDictionary.Values用法及代碼示例
- C# SortedDictionary.Item[]用法及代碼示例
注:本文由純淨天空篩選整理自Kirti_Mangal大神的英文原創作品 Queue.IsSynchronized Property in C#。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。