대부분이 호기심을위한 것입니다.이 구성 (C # 및 정기적으로 사용하는 다른 언어로)에서 생각할 수있는 거의 모든 유스 케이스를 구현하는 더 좋은 방법이 있지만, 최근에 여기에서 보았습니다. scoped mutex 멋진 개념이었다.사용 블록은 GC에 대한 참조를 만들고 유지 관리합니까?
제 질문은 사용중인 문이 참조를 유지합니까 (예 : GC가 실행되는 것을 방지 할 것인가)하는 것입니다. 내가 있다면
예를 들어,해야 할 일 :
using (new ScopedMutex())
{
// ...
}
는 ScopedMutex 객체는 사용 블록의 끝 부분에 자신의 존재를 유지하는 것, 또는 GC 실행 및 중간 블록 폐기 수 있을까?
아, 나는 물론이에 대한 참조를 필요로 지금 바보 같은 느낌이 결국 부르겠습니다 ... 고마워요. :) – Tanzelax
문제의 객체가 봉인 된 클래스이고 아무것도하지 않는 'Dispose'메소드가있는 경우 JIT가 "Dispose"를 무효로 인라인하지 못하도록하는 사양이 있습니까? 'GC.KeepAlive'를 인라이닝하는 것은 금지됩니까? – supercat
@supercat 나는 그것을 의심한다. GC에는 'Dispose'가 또 다른 방법입니다. 반면 'Finalize'(C#에서 소멸자로 나타남)는 GC가 특별히 신경을 쓰는 것이며 명시 적 소멸자가없는 객체에 대한 최적화 기능을 가지고 있습니다. –