Предположим, у нас есть коллекция фруктовых объектов.Соответствующий параллельный сбор для поиска первого события
Несколько потоков могут добавить/удалить из этой коллекции, а также типы фруктов могут появляться несколько раз:
"apple", "pear", "orange", "pear", "apple"
Теперь система может обрабатывать различные типы фруктов в то же время, но это будет, если 2 резьба перерывом попробуйте и обработайте 2 объекта одного типа (например, 2 яблока).
Поэтому, когда поток пытается обработать текущие плоды (например, яблоко), необходимо проверить, что яблоко является первым яблоком в очереди. Если он стоит в очереди за другим яблоком, он должен подождать.
Я планировал использовать ConcurrentQueue, но я не вижу, как бы я сказал, что яблоко было первым в очереди в очереди?
Есть ли подходящая коллекция, которая поддерживает эту функциональность?
Вы можете показать свою реализацию кода, чтобы мы могли лучше понять, что вы делаете или не делаете ..? – MethodMan
Это буквально очередь строк или строки здесь представляют различные типы объектов в очереди? –
Кроме того, что означает «обработка» плода? Какова задача ваших потоков? Пожалуйста, начните с однопоточного описания проблемы, которую вы решаете, * затем * вы можете описать, как вы хотите, чтобы работа была распределена между потоками (и, следовательно, какие характеристики вы хотите в типе коллекции). –