Мой итератора код:Распараллеливать rocksdb итератора
Iterator* iterator = _db->NewIterator(ReadOptions());
for (iterator->SeekToFirst(); iterator->Valid(); iterator->Next()) {
Slice const& key = iterator->key();
Slice const& value = iterator->value();
bool continue = callback(key, value);
if (!continue) {
break;
}
}
Порядок перебора не имеет значения, но разорвать цикл очень важен, поэтому мы не будем перебирать ненужные элементы. Я использую тот факт, что элементы сортируются по значимому порядку, чтобы знать, когда сломать. callback
может занять много времени.
Так псевдокод, что я хотел бы сделать, это
parallel-iterate(iterator)
if(!callback(key,value)
stop-parallel
Я попытался применить параллелизм :: parallel_for_each, но кажется, что это не будет соответствовать rocksdb API.
Как вы предлагаете реализовать параллельную итерацию?