タグ付けされた質問 「concurrenthashmap」

5
ConcurrentHashMap値の反復はスレッドセーフですか?
ConcurrentHashMapの javadoc は次のとおりです。 通常、取得操作(getを含む)はブロックされないため、更新操作(putおよびremoveを含む)と重複する場合があります。取得は、その開始時に保留されている最後に完了した更新操作の結果を反映します。putAllやclearなどの集約操作の場合、同時取得は一部のエントリのみの挿入または削除を反映する場合があります。同様に、イテレータと列挙は、イテレータ/列挙の作成以降のある時点でのハッシュテーブルの状態を反映する要素を返します。ConcurrentModificationExceptionはスローされません。ただし、イテレータは一度に1つのスレッドのみが使用するように設計されています。 どういう意味ですか?2つのスレッドで同時にマップを反復しようとするとどうなりますか?反復中にマップに値を追加またはマップから削除するとどうなりますか?

7
ConcurrentHashMapがnullのキーと値を防止するのはなぜですか?
のJavaDoc ConcurrentHashMapはこれを言っています: とHashtableは異なりHashMap、とは異なり、このクラスはキーまたは値として使用できませんnull。 私の質問:なぜですか? 2番目の質問:Hashtablenullを許可しないのはなぜですか? 私はデータを格納するために多くのHashMapを使用しました。しかし、変更するConcurrentHashMapとNullPointerExceptionsが原因で何度か問題が発生しました。

3
gcc std :: unordered_mapの実装は遅いですか?もしそうなら-なぜですか?
私たちは、C ++で高性能の重要なソフトウェアを開発しています。そこで、並行ハッシュマップが必要で、それを実装しました。そこで、並行ハッシュマップがと比較してどれほど遅いかを把握するためのベンチマークを作成しましたstd::unordered_map。 しかし、std::unordered_map信じられないほど遅いようです...だから、これは私たちのマイクロベンチマークです(並行マップでは、ロックが最適化されないことを確認するために新しいスレッドを生成し、私も0を挿入しないことに注意してくださいgoogle::dense_hash_map。 null値が必要です): boost::random::mt19937 rng; boost::random::uniform_int_distribution<> dist(std::numeric_limits<uint64_t>::min(), std::numeric_limits<uint64_t>::max()); std::vector<uint64_t> vec(SIZE); for (int i = 0; i < SIZE; ++i) { uint64_t val = 0; while (val == 0) { val = dist(rng); } vec[i] = val; } std::unordered_map<int, long double> map; auto begin = std::chrono::high_resolution_clock::now(); for (int i = …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.