개체를 잠글 때 해당 개체가 전체 응용 프로그램에 잠겨 있습니까? 예를 들어잠금 장치 (objlocker)가 해당 개체 스레드를 앱 전체에 안전하게 만드나요? 정적 멤버는 자동으로 스레드로부터 안전합니까?
, 요컨대 제 19.6.1 "안전 및 .NET 프레임 워크 유형을 스레드"에서 C# 3.0에서이 조각 :
lock (list)
list.Add ("Item " + list.Count);
다른 것을 방지 :
static void AddItems()
{
for (int i = 0; i < 100; i++)
lock (list)
list.Add ("Item " + list.Count);
string[] items;
lock (list) items = list.ToArray();
foreach (string s in items) Console.WriteLine (s);
}
첫 번째 잠금을합니까 스레드가 액세스하는 것 :
lock (list) items = list.ToArray();
또는 둘 모두 동시에 실행할 수 있습니까?
그리고 CLR은 자동으로 정적 메서드를 안전하게 만듭니다. 아니면 개발자에게 달린 것입니까?
감사합니다, 존
나를 정리해 주셔서 감사합니다. – John