-
lock() - 참고: MSDN 에서 복사~예전 글들/.NET, C# 2010. 10. 8. 14:02반응형
사용 예제
Object thisLock = new Object();
lock(thisLock)
{
// Critical code Section.}
lock 키워드를 사용하면 다른 스레드가 코드의 임계 영역에 있는 동안에는 특정 스레드가 임계 영역에 들어갈 수 없습니다. 다른 스레드가 잠긴 코드에 들어가려고 할 경우 개체가 해체될 때가지 대기합니다.
lock 키워드는 블록의 시작 부분에서 Enter를 호출하고 블록의 끝 부분에서 Exit를 호출합니다.
일반적으로 코드에서 제어되지 않는 인스턴스나 public 형식은 잠그지 않는 것이 좋습니다.
1. lock(this) - 해당 인스턴스에 공용으로 액세스를 할 수 있는 경우 문제가 생김
2. lock(typeof(MyType)) - MyType에 공용으로 액세스할 수 있는 경우 문제가 됩니다.
3. lock("myLock") - 동일한 문자열을 사용하는 프로세스의 다른 코드가 동일한 잠금을 공유하게 되므로 문제가 됩니다.
가장 좋은 방법은 private 개체를 정의하여 잠그거나 private static 개체 변수를 정의하여 모든 인스턴스에 공통된 데이터를 보호하는 것입니다.반응형'예전 글들 > .NET, C#' 카테고리의 다른 글
HttpWebRequest.BeginGetResponse 메서드 - MSDN 참조 (0) 2010.10.15 라이브러리가 안찾아 질때는 이렇게 추가 (0) 2010.10.08 Hashtable (0) 2010.09.09 foreach 가 뭔가요? (0) 2010.09.01 2010.8.27 WPF에서 팝업창 비슷하게 다른 WPF 윈도우창 에 띄우기 (0) 2010.08.27 댓글