0
我的迭代器代码:并行化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。
你会如何建议实现并发迭代?