2011-05-11 5 views
6

카운트 된 다른 객체를 다른 스레드로 보낼 때 스레드를 시작하기 전에 또는 스레드 내에서 카운트를 증가시키는 것이 좋습니다.참조 횟수를 늘리는 데 도움이되는 규칙은 무엇입니까?

좀 더 일반적인 의미에서, (함수로) 전달 된 매개 변수가 이미 설명되어 있다고 가정해야합니까?

+0

이 기술에 대한 참조는 무엇입니까? 서로 다른 기술은 서로 다른 해답을 가질 수 있습니다. (@closevoter : 나에게 진정한 질문처럼 보일지 모르지만 약간의 설명이 필요 하겠지만 ...) –

+0

좋은 지적, 나는 C 언어를 특별히 언급하고있다.하지만 그렇지 않은 언어에는 적용될 수 있다고 생각한다. 참조 카운팅이 기본적으로 구현되어 있어야합니다. –

답변

4

개체를 전달하는 새 스레드 내에서 카운트를 증가시키는 것이 거의 확실합니다. 새로운 "자식"스레드가 전혀 실행되기 전에 "부모"스레드의 임의의 양의 코드가 실행될 수 있습니다.이 경우 "부모"의 함수가 반환 될 수 있고, 다른 작업을 수행하고, 참조 횟수를 0으로 감소시킬 수 있습니다 , 그리고 개체를 무료로. 그러면 새 스레드가 잘못된 메모리를 만져서 정의되지 않은 동작을 호출하고 모든 지옥이 끊어집니다.

새 스레드가 즉시 실행되지 않는 것은 통계적으로 볼 때 매우 드물기 때문에 이러한 버그는 오랫동안 감지되지 않을 것입니다. 실제로 처음에 버그를 보는 고객/고객이 될 것입니다. :-)

+0

감사! 그건 제가 생각할 수없는 부분입니다 ... 부모님이 그 참조를 해방하기 전에 부모님이 그것을 주장 할 수 있기를 바랍니다. –

관련 문제