要素の追加と削除を同時に実行しながら、unordered_map のキーをダンプしたいと考えています。完全にダンプするのに 4 秒かかります。長すぎます。次のように、別のスレッドにダンプすることは可能ですか:
while (1) {
pthread_mutex_lock( &mutex );
if(iter!=map.end()){
x=iter->first
iter++;
}
pthread_mutex_unlock( &mutex );
do_this(x); // this takes time to complete
}
メインスレッドにいる間:
pthread_mutex_lock( &mutex );
map.erase(iter);
イテレータは消去後に無効になるため、順序付けられていないマップの消去方法は問題になりますか。
並行してダンプする他の安全な方法はありますか?