[설계 원칙과 제안] lock
4979 단어 Lock
lock 메커니즘, 인용 유형, 값 유형, 문자열과 응용 프로그램 영역을 알고 있는 분들은 다음과 같은 내용에 익숙하실 수 있습니다.
1. 추천하는 lock 코드부터 살펴보기
class LockDemo
{
private static object asyncLock = new object();// static object
public static void Test()
{
lock (asyncLock)//
{
//
}
}
private object asyncLock2 = new object();// object
public void Test2()
{
lock (asyncLock2)//
{
//
}
}
}
2. lock 대상이 null이 되지 않도록 하십시오
object o = null;
lock (o)// o null
{
}
3. 클래스 자체가 퍼블릭이라면 클래스 내부에서 lock(this)을 절대 사용하지 마십시오.
5. lock(typeof(int) 금지, 모든 기본 유형도 일치
6. lock("string") 엄금
7. lock 값 형식을 엄금합니다(예를 들어 lock(int)...자동으로 포장됩니다. (모니터 엔터테인먼트에서만 시뮬레이션할 수 있고 편집기에서 lock (int) 를 막을 수 있습니다.
8. 필요할 때 코드 중복 실행 방지 이중 검사
private static bool condition = true;
public static void Test3()
{
if (condition)
{
lock (asyncLock)// CLR ,
{
if (condition)
{
condition = false;
}
}
}
}
9.lock의 기본적 실현, 모두들 잘 알고 있을 것이다
object o = new object();
Monitor.Enter(o);
try
{
//
}
finally
{
Monitor.Exit(o);
}
10. CLR 중 두 가지 자물쇠가 내부 핵에 들어가지 않을 수 있다. 하나는 자전거 자물쇠이고 다른 하나는 lock이다. 이 두 가지 속도는 모두 비교적 빨라서 시간이 짧은 잠금에 적합하다(내부 핵에 들어가는 자물쇠라면 적어도 30ms이다)
11.lock프로그래밍을 사용하는 것이 간단하고 읽기와 쓰기 자물쇠, 신호량 등 사용이 편리하다
12. 성능과 프로그래밍 때문에 lock을 사용하지 않는 경우도 있다
일부 컨텐트는 MSDN 및 기타 타사 기사에서 참조됨
본인의 수준에 한계가 있으므로, 누락이나 오류가 있으면, 고수 여러분의 지적을 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java Lock 인터페이스 상세 및 실례 코드java Lock 커넥터 java.util.concurrent.locks 인터페이스 잠금 public interface Loce Loce는 synchronized 방법과 문장을 사용하는 것보다 더 광범위한 잠금 조작...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.