ホームページ > バックエンド開発 > C++ > C のリーダー/ライター ロックは、頻繁に読み込むユーザーとまれな書き込みを行うユーザーの同時アクセスをどのように最適化できますか?

C のリーダー/ライター ロックは、頻繁に読み込むユーザーとまれな書き込みを行うユーザーの同時アクセスをどのように最適化できますか?

Mary-Kate Olsen
リリース: 2024-12-03 21:19:12
オリジナル
777 人が閲覧しました

How Can Reader/Writer Locks in C   Optimize Concurrent Access for Frequent Readers and Infrequent Writers?

C のリーダー/ライター ロック : 頻繁にリーダーを使用する場合と、頻繁に書き込みを行わない場合の効率的なソリューション

C では、リーダー/ライター ロックは非常に重要です複数のスレッドによる共有データへの同時アクセスを最適化するために設計された同期プリミティブ。リーダー/ライター ロックのメリットがよく得られるユース ケースは、頻度の低い単一のライターと、頻繁に使用される多数のリーダーが存在する場合です。この記事では、リーダー/ライター ロックを実装するための標準 C アプローチと、古いコンパイラ バージョンでの Boost を使用した代替方法について説明します。

標準 C ソリューション (C 14)

推奨最新の C バージョン (C 14 および VS2015 以降) のクロスプラットフォーム ソリューションは、標準ライブラリのヘッダ。これにより、次のロック タイプが提供されます。

  • std::shared_mutex (別名 Lock): 基本ロック クラス
  • std::unique_lock (別名 WriteLock): 共有データへの排他的書き込みアクセスを許可する固有のロック
  • std::shared_lock (別名 ReadLock): 共有データへの同時読み取りアクセスを許可する共有ロック

古いバージョン向けのブースト ソリューション

古いコンパイラ バージョンおよび標準の場合、確実な代替方法は、Boost スレッド ライブラリを使用することです。 Boost は次のロック タイプを提供します。

  • boost::shared_mutex (別名 Lock): 基本ロック クラス
  • boost::unique_lock (別名 WriteLock): 共有データへの排他的書き込みアクセスを許可する固有のロック
  • boost::shared_lock (別名 ReadLock): 共有データへの同時読み取りアクセスを許可する共有ロック

使用例

標準 C と Boost の両方を使用する方法は次のとおりです。ソリューション:

標準 C (C 14):

#include <shared_mutex>

typedef std::shared_mutex Lock;
typedef std::unique_lock< Lock > WriteLock;
typedef std::shared_lock< Lock > ReadLock;

Lock myLock;

void ReadFunction()
{
    ReadLock r_lock(myLock);
    // Do reader stuff
}

void WriteFunction()
{
    WriteLock w_lock(myLock);
    // Do writer stuff
}
ログイン後にコピー

Boost:

#include <boost/thread/locks.hpp>
#include <boost/thread/shared_mutex.hpp>

typedef boost::shared_mutex Lock;
typedef boost::unique_lock< Lock > WriteLock;
typedef boost::shared_lock< Lock > ReadLock;

Lock myLock;

void ReadFunction()
{
    ReadLock r_lock(myLock);
    // Do reader stuff
}

void WriteFunction()
{
    WriteLock w_lock(myLock);
    // Do writer stuff
}
ログイン後にコピー

プラットフォームと C バージョンに基づいて適切なソリューションを選択することで、共有を効率的に管理できますリソースを削減し、ライターよりもリーダーの方がはるかに多い同時アプリケーションのパフォーマンスを最適化します。

以上がC のリーダー/ライター ロックは、頻繁に読み込むユーザーとまれな書き込みを行うユーザーの同時アクセスをどのように最適化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート