LockManager 클래스
LockManager 클래스입니다.
상속 계층 구조
System.Object
Microsoft.TeamFoundation.Framework.Server.LockManager
네임스페이스: Microsoft.TeamFoundation.Framework.Server
어셈블리: Microsoft.TeamFoundation.Framework.Server(Microsoft.TeamFoundation.Framework.Server.dll)
구문
‘선언
Public Class LockManager
public class LockManager
LockManager 형식에서는 다음과 같은 멤버를 노출합니다.
생성자
이름 | 설명 | |
---|---|---|
![]() |
LockManager | 생성자 |
위쪽
메서드
위쪽
설명
관리 되는 저장소 교착 상태 방지 사례. 모든 잠금 LockManager 잠금을 사용 해야 합니다. 모든 잠금 수준 (잠금 계층 구조에 있는 위치)을 할당 하 고 작업을 수행 하는 계층 구조에서 현재 보유 된 잠금을 요청 잠금만 수 있습니다.
LockManager 예: "잠금 이라는"의 개념을 지원 우리는 우리가 하지 않은 안정적인 엔터티에 잠그는 해야 메모리에 개체 있지만 이러한 엔터티의 이름만. 사서함 및 데이터베이스는 있습니다. 제공 하 고 이동 사서함 또는 데이터베이스에 연결 된 모든 개체 수, 이름, 사서함 데이터베이스 또는 사서함 번호 GUID 데이터베이스 등은 이러한 엔터티에 대 한 안정적인 내 야 해요. 명명 된 잠금에 대 한 모니터 잠금을 한 판독기-작성기 잠금을 지원합니다.
일반 "개체 잠금", LockManager도 지원 메모리에 특정 개체 인스턴스를 잠그는 해야 하겠습니다. 만 모니터 잠금 개체 잠금에 대해 현재 지원 되는 일치 하는 C# "잠금" 문에 사용 되는 메커니즘을 잠금. LockManager 개체 잠금을 잠금 계층 구조를 완전 하 게 참여 하는 "잠금" 문을 달리 따라서 확인 하기 올바른 순서로 사용 됩니다.
"개체 잠금" 특별 한 "리프 개체 잠금"입니다. 이러한 잠금 잠금 수준을 지정할 수 없으므로-항상 대부분 중첩 잠금이 될 것입니다 및 이러한 잎 잠금을 보유 하는 경우 수행할 수 없으면 다른 잠금.
"잠금 이라는" 동적으로 각 고유 이름에 대 한 잠금 개체로 할당 하 고 글로벌 사전에 저장 하 여 구현 됩니다. 따라서 이름으로 명명 된 잠금 액세스 사전 조회 해당 잠금 개체를 찾을 수 있어야 합니다. 잠금 개체 사전 자체 잠가야 이런 조회를 수행 하는 동안. 이 모든는 사전과 사전 조회 잠금 추가 비용 때문에 잠재적으로 일반 잠금 보다 비싼 명명 된 잠금. 이러한 비용을 줄이기 위해 두 가지 기술을 사용: (1) 사전 글로벌 잠금 경합을 줄이려면 잠금 개체 사전 분할 (2) 제공 하 호출자 잠금 명명 된 개체 참조를 캐시 하 고 대부분의 사전 조회를 무시 하는 기능입니다. Note를 분할 혼자 충분 한 때문에 않습니다 데이터베이스 잠금; 등 비교적 넓은 범위 잠금 많은 도움이 되지는 않습니다 예를 들어, 동일한 선택 하려는 모든 잠금을 공유 합니다.
고유 잠금 이름 제한 될 수가 있습니다. 따라서 잠재적으로 만들 수 있습니다 잠금 명명 된 개체 수가 없는 경우도 경계 잠금 명명 된 개체를 참조 하는 글로벌 사전에 저장 되므로 이러한 개체 자동 가비지 수집 되지 못했습니다. 따라서 정기적으로 사용 하지 않는 명명 된 잠금 개체를 정리할 수 있도록 하겠습니다. 명명 된 잠금 개체의 스레드 안전 정리를 지원 하기 위해 이러한 개체입니다 됩니다. 모든 잠금 잠금 명명 된 개체에 대해 수행 해야 이러한 개체는 "addrefed" 것, 잠금 해제 된 후 참조를 해제 해야 합니다. 정리 논리 개체 사전에서 제거 하기 전에 현재 참조 되지 않은 확인 합니다. 명명 된 잠금 개체를 사전에서 제거 후 삭제 된 것으로 표시 하 고 addrefed를 더 이상 수 없습니다. 다음 번에 같은 이름의 잠금 시도가 동일한 이름을 가진 명명 된 잠금 새 개체를 할당 하 고 사전에 추가 하면 됩니다. 따라서는 확인 부실에 명명 된 캐시 호출자가 잠금 개체 참조-참조 이러한 부실 찾아서 업데이트 다음에 잠그고 잠금을 새로운 개체를 할당 하려고 했습니다.
간단한 시간 기반 추론 잠금 사용 하지 않는 개체를 정리 하는 데 사용 됩니다. 모든 N에 라는 잠금 해제 호출이 있으면 정리를 실행 후 사전 검토 및 최근에 사용 되는 모든 참조 되지 않은 개체를 수집 하는 데 시간이 있는지 확인 합니다. 그런 다음 이러한 모든 개체를 삭제 하 고 사전에서 해당 참조를 제거 하려면 시도 합니다. 지정된 된 파티션에 대 한 정리를 실행 하면 다른 파티션의 잠글 수 없으므로 되도록 사전 파티션 당 정리를 합니다.
스레드로부터의 안전성
이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.