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。
你會如何建議實現併發迭代?