私のイテレータコード:
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
concurrency::parallel_for_each を適用しようとしましたが、rocksdb api には適合しないようです。
同時反復を実装するにはどうすればよいでしょうか?