멀티 스레드 환경에서 잘 작동하는 Delphi에서 구현 된 우선 순위 큐를 찾고 있습니다.Delphi 용 스레드 안전 우선 순위 대기열?
이상적으로 잠금이 없거나 단일 스레드 구현 (이미 가지고있는) 주위에 잠긴 래퍼보다 나은 것으로 다중 스레드 삽입/삭제 용으로 설계되었습니다.
특이점은 최상위 (최상위 우선 순위 항목)이 변경 될 때 추가, 삭제 및 알림 만 발생하는 반면 최상위 우선 순위 항목의 "팝"작업은 매우 드문 경우입니다.
다른 스레드에서 실행되는 워치 독/타임 아웃 스레드 모니터링 작업에 사용되며, 대부분의 경우 정상적으로 종료 될 것으로 예상되므로 큐에 추가/제거됩니다. 타임 아웃 쓰레드는 본질적으로 다음 timeout 이벤트를 기다리고 있으므로 우선 순위가 가장 높은 이벤트가 변경 될 때 알림이 필요합니다.
작업은 언제든지 안전하게 종료 될 수있는 스크립트로 처리됩니다.
우선 순위 큐보다 더 나은 알고리즘이 있다면 좋은 답변 일 수도 있습니다!
편집 : 마틴 제임스 (Martin James)의 말에 따르면, 또 다른 특수성은 다른 타임 아웃 값이 상대적으로 적고 각 타임 아웃 값마다 FIFO 큐의 문제가된다는 것입니다.
"단일 스레드 구현을 둘러싼 잠긴 래퍼"가이 작업에 적합하지 않은 이유는 무엇입니까? – Pol
잠금 기반 솔루션을 적합하지 않게 만드는 성능 제약 조건은 무엇입니까? –
@Pol : @Pol : 이미 게시물이 있기 때문에 충분하지 않습니다. –