我想转储 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);
unordered map 的擦除方法是否有问题,因为擦除后迭代器将无效。
还有其他安全的并行转储方式吗?