boost :: shared_mutexを介したg ++-4.4(C ++ 11/14ではない)でのマルチリーダーシングルライターの実装はパフォーマンスに影響しますか?

アジェイ・ヤダブ

使用法:本番環境では、実装しようとしているキャッシュにアクセスできる約100のスレッドがあります。キャッシュが欠落している場合、情報はデータベースからフェッチされ、キャッシュはライタースレッドを介して更新されます。

これを実現するために、実装multiple read and single writer計画しています。使用しているため、g ++バージョンを更新できません。g++-4.4

更新:各ワーカースレッドは、読み取りと書き込みの両方で機能します。キャッシュが失われた場合、情報はDBからキャッシュされます。

問題の説明:パフォーマンスを向上させるためにキャッシュを実装する必要があります。このため、キャッシュの読み取りはより頻繁に行われ、キャッシュへの書き込み操作は非常に少なくなります。

私は、我々が使用することができると思いますboost::shared_mutex boost::shared_lockboost::upgrade_lockboost::upgrade_to_unique_lock implementation

しかし、boost::shared_mutexパフォーマンスの問題があることわかりました。

質問

  1. boost::shared_mutex影響は、ケースの読み込みでのパフォーマンスが非常に頻繁にされますか?
  2. コンパイラのバージョンを検討する際に採用できる他の構成および設計アプローチはg++4.4何ですか?
  3. そのようなそれを設計する方法についての回避策はありreads are lock freeますか?

また、Mapキャッシュ用の情報を保持するために使用することを目的としています

ハンス・オルソン

書き込みが存在しなかった場合、1つの可能性として2-level cache、最初に、thread-local cacheがあり、次にnormal cache with mutex or reader/writer lockあります

書き込みが非常にまれな場合は、同じことができます。ただし、スレッドローカルキャッシュを無効にするロックフリーの方法がいくつかあります。たとえば、書き込みのたびに更新されるアトミックintがあり、その場合はスレッドローカルキャッシュをクリアします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ