当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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#。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。