큐 안정성

우선순위 큐 유효성 설계

동적 우선순위에서는 heap 내부 항목을 직접 고치기 어렵습니다. 새 항목을 넣고 꺼낼 때 최신 토큰을 확인하는 정책이 필요합니다.

방향

작을수록 높은지 먼저 고정

우선순위 방향이 문서와 코드에서 다르면 가장 중요한 작업이 뒤로 밀릴 수 있습니다.

동률

seq로 재현 가능한 순서 보장

같은 priority에서는 입력 순서나 timestamp를 보조 키로 넣어 비교 오류를 막습니다.

stale

꺼낼 때 최신 토큰을 비교

재삽입 방식에서는 이전 항목이 남아 있으므로 task_id와 token으로 유효성을 확인합니다.

안정성을 깨뜨리는 세 순간

enqueuepriority, seq, task_id를 함께 넣어 비교 가능한 tuple을 만듭니다.
update기존 항목을 수정하지 말고 새 token으로 재삽입하며 현재 맵을 갱신합니다.
popheap 항목의 token이 현재 맵과 다르면 오래된 작업으로 보고 건너뜁니다.