2010-12-27 4 views
7

나는 시작한 이래로 발생한 이산 간격의 수를 알려주는 프로세스를 구현하는 방법을 생각하고있었습니다. 정확성이 떨어지고 있습니까? 잠시 후, 그리고 과도한 클라이언트 남용 후에 어떻게 정확성을 잃지 않고 구현할 수 있습니까? 얼랭 (Erlang)에서이 일을하는 방법에 관해서 나는 다소 괴롭다.얼랑 (Erlang)의 정확한 시계

당연히 now()와 같은 시스템 호출을 사용하고 싶지 않습니다.

답변

10

수동 틱 계산은 약간의 일정 변동 및 함수 실행 오버 헤드로 인해 정확하지 않을 수 있습니다.

프로세스가 시작될 때 timestamp을 잡고 해당 함수에 대한 각각의 재귀 호출에 전달해야합니다. 그런 다음 프로세스를 시작한 이후 경과 한 틱 수 (마이크로 초)를 가져 오려면 새 타임 스탬프를 가져 와서 둘 다 now_diff으로 전달하십시오.

"틱"이라는 개념을 사용하는 것처럼 보이므로 "틱"이 얼마나 많은 마이크로 초인지 파악하고 최종 결과를 나눕니다.

+0

예 가장 쉬운 방법이라고 생각합니다. "재시도 횟수 제한"을 "after .."시간 제한과 함께 사용하여 재귀 호출 횟수를 줄일 수 있습니다. – buddhabrot