Ho una coda di blocco limitata in un'applicazione che è stata scritta diversi anni fa. Diciamo solo che l'implementazione è meno che stellare, ma ha funzionato. Tuttavia, ha alcuni problemi di prestazioni. Sembra che .NET 4.0 BlockingCollection<T>
sia la sostituzione giusta, ma devo assicurarmi che sia effettivamente una coda. Cioè, è garantito che sia rigorosamente FIFO se usato in un modo single-producer, single-consumer?BlockingCollection <T> garantisce l'ordine di rimozione?
La documentazione non dice esplicitamente. L'argomento BlockingCollection fa dire (nelle osservazioni):
BlockingCollection<T>
è simile ad un tradizionali dati della coda blocco struttura, tranne che il meccanismo di memorizzazione dei dati sottostante viene estratta via comeIProducerConsumerCollection<T>
.
Ma nulla dice espressamente che le cose verranno rimosse nello stesso ordine in cui sono state aggiunte.
Qualcuno sa per certo?
Downgoter, hai qualcosa da dire? È consuetudine dare una ragione per un downvote. –