私はC++ API(LinuxとSolaris用)をスレッドセーフなものにしようとしています。そのため、内部データ構造を破壊することなくその関数を別のスレッドから呼び出すことができます。私の現在のアプローチでは、メンバ変数へのすべてのアクセスを保護するためにpthread mutexを使用しています。これは単純なゲッター関数がmutexのロックとアンロックを行うことを意味します。特に、APIが主にシングルスレッドのアプリケーションで使用されるため、オーバーヘッドが心配です。pthread mutexのオーバーヘッド?
- あなたがそうでないものに対してロックを使用、シングルスレッドのアプリケーションの性能を持つ任意の経験を持っています:
だから、私はお願いしたいのですが?
- これらのロック/ロック解除コールは、たとえば、 boolメンバ変数の単純な "return this-> isActive"アクセス?
- あなたはそのような可変アクセスを保護するためのより良い方法を知っていますか?
おかげで、多くの答えのためにたくさん!いくつかの説明: - 現在のAPIには、OpenGLと同様の制限があります。オブジェクトは、作成された同じスレッドからのみ使用/操作できます。私はその制限を取り除きたい。 - "Accessor"メソッドについての良い点 - 今後のAPIでこれを念頭に置いておきますが、現行のAPIをそのように変更することはできません。 - パブリックメソッドはわずかです。そこで、私はこれらすべてのメソッドにロックを追加するつもりです(ほとんどがかなり高いレベルです) - はい、私はマルチスレッド化に新しいです:-) –