C# | Compruebe si ArrayList está sincronizado (seguro para subprocesos)

La propiedad ArrayList.IsSynchronized se usa para obtener un valor que indica si el acceso a ArrayList está sincronizado (seguro para subprocesos).

Sintaxis:

public virtual bool IsSynchronized { get; }

Valor devuelto: esta propiedad devuelve verdadero si el acceso a ArrayList está sincronizado (seguro para subprocesos); de lo contrario, devuelve falso . El valor predeterminado es falso .

Los siguientes programas ilustran el uso de la propiedad discutida anteriormente:

Ejemplo 1:

// C# code to check if ArrayList
// Is Synchronized or not
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an ArrayList
        ArrayList myList = new ArrayList();
  
        // Adding elements to ArrayList
        myList.Add("A");
        myList.Add("B");
        myList.Add("C");
        myList.Add("D");
        myList.Add("E");
        myList.Add("F");
  
        // Creates a synchronized
        // wrapper around the ArrayList
        ArrayList smyList = ArrayList.Synchronized(myList);
  
        // Displays the synchronization
        // status of both ArrayList
        Console.WriteLine("myList is {0}.", myList.IsSynchronized ?
                               "Synchronized" : "Not Synchronized");
  
        Console.WriteLine("smyList is {0}.", smyList.IsSynchronized ? 
                                "Synchronized" : "Not Synchronized");
    }
}
Producción:

myList is Not Synchronized.
smyList is Synchronized.

Ejemplo 2:

// C# code to check if ArrayList
// Is Synchronized or not
using System;
using System.Collections;
  
class GFG {
  
    // Driver code
    public static void Main()
    {
  
        // Creating an ArrayList
        ArrayList myList = new ArrayList();
  
        // Adding elements to ArrayList
        myList.Add(1);
        myList.Add(2);
        myList.Add(3);
        myList.Add(4);
        myList.Add(5);
        myList.Add(5);
  
        // the default is false for 
        // IsSynchronized property
        Console.WriteLine(myList.IsSynchronized);
    }
}
Producción:

False

Nota:

  • Recuperar el valor de esta propiedad es una operación O(1).
  • Para garantizar la seguridad de subprocesos de ArrayList, todas las operaciones deben realizarse a través del contenedor devuelto por el método Synchronized.
  • Enumerar a través de una colección no es intrínsecamente un procedimiento seguro para subprocesos. Incluso cuando una colección está sincronizada, otros subprocesos aún pueden modificar la colección, lo que hace que el enumerador arroje una excepción.

Referencia:

Publicación traducida automáticamente

Artículo escrito por Kirti_Mangal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *