2014-06-14 3 views
-1

나는 재진입 코드를 정말로 이해하지 못한다.재진입 기능 및 그 모습

누군가 내가 재진입 코드에 대한 알고리즘을 보여줄 수 있습니까? 그것이 어떻게 작동하는지에 대한 설명도 좋을 것입니다. 감사.

+1

출발지를 알 필요가있는 방향을 알려면 알 수 없습니다. 당신이 이해하지 못했던 특정 기능이 있었습니까? 그것을 우리에게 보여줄 수 있습니까? "재입국"이 무엇을 의미하는지 알고 있습니까? –

답변

0

일부 기능의 개발자 인 경우 함수가 실행 시간 중에 호출되지 않았 음을 확신 할 수 있다면 재진입성에주의를 기울이지 않아도됩니다.

그러나 다른 작업, 스레드 또는 중단 신호로 함수를 호출 할 수있는 경우 함수가 실행 중 재개 될 때 상황이 발생할 수 있습니다. 재진입 호환이 아니거나 여러 개 입구에서 데이터 손상/덮어 쓰기 또는 기능 동작의 연대순 변경과 같은 예기치 않은 동작이 발생할 수 있습니다.

여기에는 여러 가지 방법이 있습니다. 때로는 함수를 작성하는 것만으로도 충분합니다 (예 : 외부 변수 사본으로 작업하는 경우). 그러나 때로는 뮤텍스를 사용하는 것이 불가피합니다. 뮤텍스가 사용되면, 함수의 호출자는 뮤텍스 잠금 해제를 기다리고있을 것이다. 크리티컬 섹션 전에 뮤텍스 락킹을 배치하고 크리티컬 섹션 이후에 뮤텍스 락킹을 배치한다. 전체 기능 몸은 자물쇠와 자물쇠 쌍 사이에 감싸 일 수 있습니다.