홈>
잠금을 놓을시기와 장소에 대해 개발자가 따라야 할 지침이 있는지 알고 싶습니다.
예를 들어 : 다른 스레드가 SomeHeapValue의 값을 예기치 않게 변경하지 못하도록하기 위해 이와 같은 코드를 잠 가야한다는 것을 알고 있습니다.
class Foo
{
public SomeHeapObject myObject;
public void DoSummat(object inputValue_)
{
myObject.SomeHeapValue = inputValue_;
}
}
그러나 내 질문은 잠금에 얼마나 깊이 들어가는가? 예를 들어 다음 코드가있는 경우 :
class Foo
{
public SomeHeapObject myObject;
public void DoSummat(object inputValue_)
{
myObject.SomeHeapValue = GetSomeHeapValue();
}
}
DoSummat (...) 메소드를 잠글까요 아니면 GetSomeHeapValue () 메소드를 잠글까요?
멀티 스레드 코드를 작성할 때 모두 염두에 두어야 할 지침이 있습니까?
- 답변 # 1
- 답변 # 2
가능한 한 적게, 필요한만큼만 잠그십시오.
가능한 경우 잠금을 피하십시오-.NET 4.0에는 컨텍스트 전환을 유발하지 않는 대안이 있습니다.
여러 번 잠그지 마십시오. 이에 따라 API를 구성하십시오. 예를 들어 대기열입니다. DeQueue-하나의 잠금으로 많은 항목을 대기열에서 제거 할 수있는 대체 DeQueue (int amount)를 만듭니다.
관련 자료
- machine learning - 확장 된 회선을 언제 사용해야합니까?
- javascript - 언제 typescript import * as를 사용합니까?
- rx java - 언제 blockingGet을 사용해야합니까?
- 언제 SQL 대신 PLSQL을 사용해야합니까?
- ruby : 루비 클래스에 대한 자아를 사용할 때
- database - Mysql에서 사용 사례
- 학습률 찾기 사용시기
- sas - proc sql join을 사용할 때 or 문을 사용할 수 있습니까?
- python - Pyserial에서 close () 및 __del __ ()을 언제 사용합니까?
- javascript - 언제 그리고 언제 Promiseresolve를 사용해야합니까?
- c# - SystemConvert 사용시기 및 SystemBitConverter 사용시기
- 문자열 s를 사용할 때 NewtonsoftJsonJsonReaderException
- mysql - 자동 증분 키를 언제 사용해야합니까?
- java - ConcurrentKafkaListenerContainerFactory를 언제 사용해야합니까?
- node.js - npm과 함께 React를 언제 사용해야합니까?
- spring data mongodb - MongoOperations 및 MongoTemplate을 언제 사용해야합니까?
- jquery - 장고 - 언제 그리고 왜 vuejs를 사용합니까?
- r - 언제 경고 (msg)를 사용합니까?
- javascript - 언제 어디서 knexdestroy를 사용해야합니까?
- c++ - 함수 호출에서 이동을 사용하는 경우
관련 질문
- c# : 다른 스레드를 기다리는 동안 Application.DoEvents
- c# : 다음 '스레드 안전 이중 확인 지연 초기화' 패턴을 사용해도 괜찮습니까?
- c# : Parallel.For에서 ArgumentOutOfRangeException이 발생합니다.
- c# : EF 업데이트 대기는 이전 작업 시간이 초과된 경우 지원되지 않는 MultipleActiveResultSets 예외를 throw합니다.
- c# : 작업 내부에서 정적 메서드 호출
- c# : 스레드로부터 안전한 WebApi 넣기 요청
- c# : 비동기 병렬 루프 내부의 ForEach 루프
- C# .Net Core에서 다른 REST API 요청을 병렬로 실행하는 방법은 무엇입니까?
- c# : Monitor.Pulse(All) 다음 Monitor.Wait()
내가 찾은 잠금 및 스레딩에 대한 가장 좋은 가이드는이 페이지입니다 (이것은 잠금 및 스레딩 작업시 참조하는 텍스트입니다).
http://www.albahari.com/threading/
여기서 "잠금 및 스레드 안전"단락을 원하지만 나머지 내용도 잘 읽어보십시오.