Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#에서 배열 클래스의 Array.SyncRoot 속성은 무엇을 합니까?

<시간/>

Array.SyncRoot 속성은 Array에 대한 액세스를 동기화하는 데 사용할 수 있는 개체를 가져오는 데 사용됩니다. 배열이 있는 클래스는 SyncRoot 속성을 사용하여 자체 동기화를 구현할 수도 있습니다.

컬렉션을 통해 열거하는 것은 스레드로부터 안전한 절차가 아닙니다. 다른 스레드는 컬렉션이 동기화된 경우에도 컬렉션을 수정할 수 있습니다. 이로 인해 결국 열거자가 예외를 throw합니다. 이를 위해서는 컬렉션을 잠가야 합니다.

Array.SyncRoot 속성으로 작업하는 예를 살펴보겠습니다 -

예시

using System;
using System.Collections.Generic;
using System.Linq;

class Program {
   static void Main() {
      Array arr = new int[] { 23, 11, 32, 18, 87 };
      lock(arr.SyncRoot) {
         foreach (Object val in arr)
         Console.WriteLine(val);
      }
   }
}

출력

23
11
32
18
87

위에서 우리는 배열에 잠금을 설정했습니다 -

lock(arr.SyncRoot)