複数のスレッドによって同時にアクセスされるデータ構造とオブジェクトを処理する場合、データの整合性と一貫性を確保しますが最も重要です。リーダー/ライター ロックは、この目的に効果的なメカニズムを提供します。
このシナリオでは、頻度の低い単一のライターと頻繁に多数のリーダーという特定の使用例に合わせて最適化する必要があります。このパターンに焦点を当てることで、コードのパフォーマンスと効率を大幅に向上させることができます。
C 14 以降、標準ライブラリは包括的なサポートを提供します。
#include <shared_mutex> typedef std::shared_mutex Lock; typedef std::unique_lock<Lock> WriteLock; // C++11 typedef std::shared_lock<Lock> ReadLock; // C++14 Lock myLock; void ReadFunction() { ReadLock r_lock(myLock); // Do reader stuff } void WriteFunction() { WriteLock w_lock(myLock); // Do writer stuff }
以前の C バージョンの場合、ブーストはリーダー/ライター ロックの代替実装を提供します。 boost::thread::lock および boost::thread::shared_mutex を介してheaders:
#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;
標準の C または Boost アプローチを使用すると、特定のユースケースに合わせた効率的なリーダー/ライター ロックを実装でき、マルチスレッド アプリケーションで最適なパフォーマンスとデータ保護を確保できます。
以上が頻度の低いライターと頻繁にリーダーを使用する場合に、C でリーダー/ライターのロックを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。