Mam problem Producenta/Konsumenta. Obecnie mam prosty Queue
otoczony lock
.ConcurrentQueue, która pozwala mi czekać na jednego producenta
Próbuję zastąpić to czymś bardziej wydajnym.
Mój pierwszy wybór polegał na użyciu ConcurrentQueue
, ale nie widzę sposobu, aby zmusić konsumenta do czekania na następną wyprodukowaną wiadomość (bez wykonywania Thread.Sleep).
Chciałbym również móc wyczyścić całą kolejkę, jeśli jej rozmiar osiągnie określony numer.
Czy możesz zaproponować istniejącą klasę lub implementację spełniającą moje wymagania?
Czy spróbować [ 'BlockingCollection'] (https://msdn.microsoft.com/en- us/library/dd267312% 28v = vs.110% 29.aspx) klasy? –
Spójrz na [to pytanie] (http://stackoverflow.com/questions/34255759/multiple-producers-single-consumer-locking-schema). Chociaż dotyczy to wielu producentów, nie ma znaczenia, czy masz jednego producenta. –
Czy możesz opracować na _ ", aby wyczyścić całą kolejkę, jeśli jej rozmiar osiągnie ..."? W przypadku innych potrzeb, BlockingCollection jest idealnym wyborem. –