Re thread index;обратите внимание, что степень параллелизма составляет (IIRC) только число максимум используемых потоков; не может использовать это число.Если полагаться на threadIndex
так, как вы описываете, это может означать, что вы могли бы на самом деле иметь доступ только к arrays[0]
.Короче говоря, нет: я так не думаю.
Вы можете , однако получите индекс item ;так что если это то, что вы имеете в виду, просто:
.Select((value, itemIndex) => this.Deserialize(
serializer, i, arrays[itemIndex])).ToList();
Это звучит (комментарии) как намерение для получения рабочего буфера;в этом случае я бы (и действительно, do ) оставил несколько удобных буферов в контейнере (с синхронизированным доступом и т. д.), то есть
- попытался бы получить существующий буфер изконтейнер (синхронизированный)
- , если не найден, создайте новый буфер
- (выполнить работу)
- возврат / добавление буфера в контейнер (синхронизированный)
Как правило, это будет очень быстро (намного быстрее, чем выделение буфера за одну итерацию)