응용 프로그램 (콘솔/창)과 관련하여 정적 변수의 수명을 이해하고 있지만 웹 응용 프로그램 (asp.net, MVC, 웹 API 등).정적 변수 수명 및 응용 프로그램 풀 다시 작성
내가 이해하는대로, IIS는 응용 프로그램 풀을 재활용 할 때 정적 변수가 해당 유형의 기본값 (integals = 0, 참조 유형 = null 등)으로 재설정되지만 인라인 초기화 프로그램이 다시 초기화되면 궁금해집니다. 관계없이 유형을 기본값으로 재활용하거나 재활용합니까?
실시 예 (들) : 상기에서
// example 1
static class StaticRandom
{
private static Random rng = new Random();
}
는 정적 필드 RNG 새로운 랜덤 재 초기화 될 것이다() 재활용 후 처음으로 호출되면? 내가 좋아 다시 초기화 될 때까지 IIS 재활용 후, 예 1의 RNG 변수가 널 (null)이 될 것이라고 가정에서 수정
// example 2
static class StaticRandom
{
private static Random rng = null;
public static Next()
{
if (rng == null)
rng = new Random();
return rng.Next();
}
}
오전 : 또는이 같은 변수를 사용하기 전에 널 (null) 검사를 구현해야 할 예제 2에서?
참고 : 위 예제의 스레드 안전성 문제를 완전히 알고 있습니다. 제 질문에 대한 간단한 예제 일뿐입니다. 위의 아이디어의 실제 시나리오에서 적절한 잠금 패턴을 구현했습니다.
이것은 스스로 힘들어하지는 않을 것입니다. 예제 1의 '다음'메소드에 중단 점을 넣고 재활용 후에'rng' 값을 얻었는지 확인하십시오. –
리사이클 롤에 들어가기를 기다리는 동안 내 로컬 서버를로드하고 15 분 동안 내 엄지 손가락을 움직이기보다는 명확한 설명을 요청하는 것이 훨씬 쉽다는 것을 알았습니다. 게다가, 때로는 사람들은 잘 알고있는 작은 잡았다를 명심해야한다. –
"재활용 대기": IIS를 열고 응용 프로그램 풀을 직접 재활용 하시겠습니까? –