priority queue 는 보통 heap 트리로 구현하는데,

힙트리는 lock 없이, 또는 lock 을 가볍게 만들기가 굉장히 힘듬

원소 하나 pop 하는 순간 트리를 reheap 해야돼서 ㅇㅇ

근데 병렬 알고리즘들이 생각보다 pq 를 쓰는 경우가 많아서 pq 를 scalable 하게 만드는게 몇년간 화두였는데,

그래서 나온게 뭐냐


relaxed priority queue

관련해서 나온 가장 최근 논문은 아래

https://dl.acm.org/doi/10.1145/2755573.2755616


priority 의 정확한 정렬을 그냥 포기함 ㅇㅇ

그래서 concurrent priority queue 안에 pq 를 잔뜩 넣고,

round robin 형식으로 새로 접근하는 애들마다 pq 를 빠르게 하나 줘서 lock 이 걸리는 시간을 최소화함

그 다음으로 접근하는 애들은 바로 다음 pq 를 줘버림

각 pq 끼리는 priority 정렬이 안되니까 그건 그냥 포기


오늘의 교훈: '정확한 답' 만을 요구하는 PS 문제풀이는 현실에서 별로 쓸모가 업따