マルチスレッド プログラミングでは、適切な同期を確保することが不可欠です。リーダー/ライター ロックは、複数のリーダーと 1 つのライターがデータに同時にアクセスするシナリオにソリューションを提供します。 C でリーダー/ライター ロックを実装する方法を見てみましょう。
C 14 以降、標準ライブラリは std:: による組み込みソリューションを提供します。共有ミューテックス。構文は次のとおりです:
#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); // Perform read-only operations here } void WriteFunction() { WriteLock w_lock(myLock); // Perform write operations here }
古いバージョンの C を使用している場合または、標準ライブラリ機能にアクセスできない場合は、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); // Perform read-only operations here } void WriteFunction() { WriteLock w_lock(myLock); // Perform write operations here }
リーダー/ライターのロックを理解して実装することで、データ アクセス パターンが多数の同時読み取りと単一の頻度の低い書き込みで構成されるシナリオ向けのマルチスレッド アプリケーション。
以上がリーダー/ライター ロックは C での同時データ アクセスをどのように最適化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。