답변:
그게 선택이야? -마 젠토 엔지니어들이 만들었습니다.
이것은 대답이 아니지만 해당 함수가 캐시 된 데이터를로드하는 콜백을 허용하는 것처럼 보입니다. 콜백은 현재 잠금 장치가 있는지 확인합니다. 그렇지 않은 경우 잠금을 설정하고 데이터를로드 한 다음 잠금을 해제합니다. 장소에 블록이 있다면, 그것은 잠 을위한 100,000
마이크로 초 (0.1 초) 후 다시 로더를 호출합니다.
그래서 크게 생각하면 내 추측은
lockedLoadData 메커니즘은 서버의로드를 줄여야합니다.
이전에는로드가 많은 사이트에서 구성 캐시를 정리할 때 모든 클라이언트가 CPU / IO로드를 크게 증가시키는 동일한 정보를 생성했습니다.
lockedLoadData를 사용하면 하나의 클라이언트 만 캐시를 생성하고 다른 클라이언트는 캐시를 생성합니다.
작동 방식에 대한 자세한 내용
첫 번째 함수는 "데이터 가져 오기"콜백을 호출하고 단순히 반환하는 것보다 데이터를 가져 오는 경우 (캐시의 데이터가 이전과 같이 작동하고 잠금을 사용하지 않는 경우).
데이터를 사용할 수없고 잠금이 잠긴 경우 루프에서 데이터가 도착하거나 잠금이 제거 될 때까지 데이터를로드하려고합니다.
잠금이 없으면 잠금을 생성하고 캐시에 저장하여 데이터를 생성하고 잠금을 제거하고 데이터를 반환합니다.
추신 : 우리는이 변경 사항을 최대 20kRPM로드의 클라이언트 중 하나에 대한 패치처럼 보냈으며 문제없이 3 개월 이상 작동합니다. 따라서 사용자 지정 / 모듈의 문제 일 수 있습니다 (예 : 캐시 메커니즘을 위반 한 경우)