使用法:本番環境では、実装しようとしているキャッシュにアクセスできる約100のスレッドがあります。キャッシュが欠落している場合、情報はデータベースからフェッチされ、キャッシュはライタースレッドを介して更新されます。
これを実現するために、実装multiple read and single writer
を計画しています。使用しているため、g ++バージョンを更新できません。g++-4.4
更新:各ワーカースレッドは、読み取りと書き込みの両方で機能します。キャッシュが失われた場合、情報はDBからキャッシュされます。
問題の説明:パフォーマンスを向上させるためにキャッシュを実装する必要があります。このため、キャッシュの読み取りはより頻繁に行われ、キャッシュへの書き込み操作は非常に少なくなります。
私は、我々が使用することができると思いますboost::shared_mutex boost::shared_lock
、boost::upgrade_lock
、boost::upgrade_to_unique_lock implementation
しかし、boost::shared_mutex
パフォーマンスの問題があることがわかりました。
質問
boost::shared_mutex
影響は、ケースの読み込みでのパフォーマンスが非常に頻繁にされますか?g++4.4
何ですか?reads are lock free
ますか?また、Map
キャッシュ用の情報を保持するために使用することを目的としています。
書き込みが存在しなかった場合、1つの可能性として2-level cache
、最初に、thread-local cache
があり、次にnormal cache with mutex or reader/writer lock
。があります。
書き込みが非常にまれな場合は、同じことができます。ただし、スレッドローカルキャッシュを無効にするロックフリーの方法がいくつかあります。たとえば、書き込みのたびに更新されるアトミックintがあり、その場合はスレッドローカルキャッシュをクリアします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加