스레드, 동기화 및 잠금

1782 단어 라인
전역 변수나 집합, 특히 집합의 변경 사항을 업데이트할 때 잠금이 필요합니다.
Lock:
  • Lock(this)은 현재 인스턴스만 잠그고 새 인스턴스에는 잠금이 발생하지 않습니다
  • .
  • Lock (typeof (MyType) 은 현재 형식의 모든 실례에 잠겨 있지만, 잠금 형식의 대상은 매우 느린 과정이며, 클래스의 다른 루트, 심지어 같은 응용 프로그램 영역에서 실행되는 다른 프로그램도 이 유형의 대상에 접근할 수 있기 때문에, 잠금 형식의 대상을 대체할 수 있으며, 실행을 완전히 막아서 코드가 끊길 수 있습니다.
  • Lock ("string") 은 문자열의 내용만 같으면 프로그램을 마운트할 수 있습니다.원인은NET에서 문자열은 임시로 저장됩니다. 두 변수의 문자열 내용이 같으면NET는 임시 저장된 문자열 객체를 변수에 할당합니다
  • .
    그래서 마이크로소프트는 개인 static 구성원 변수를 잠그는 lock의 제안을 내놓았다.
    컬렉션의 경우:
                   .NET는 일부 집합 클래스(예를 들어ArrayList,HashTable,Queue,Stack)에서 lock에 사용할 대상을 제공했다SyncRoot
    매거 과정 중 라인의 안전을 확보하려면 전체 매거 과정 중 집합을 잠글 수 있다
    
      
        
    Queue myCollection = new Queue();
    lock (myCollection.SyncRoot) {
    foreach (Object item in myCollection) {
    // Insert your code here.
    }
    }

    좋은 웹페이지 즐겨찾기