私は複数のスレッドによって共有されるオブジェクトを持っています。オブジェクト全体をロックせずに個々のメンバ変数をロックしたいので、異なるスレッドが同時。 いくつかの記事を読んだあと、shared_mutexとgetter()/ setter()関数を使ってコードを記述します。C++ゲッター/セッター、ミューテックス、ファイングレインロック
class Test
{
public:
**// variable, shared_mutex and getter/setter for x**
double x;
boost::shared_mutex x_mutex;
double x_getter();
void x_setter();
**// variable, shared_mutex and getter/setter for y**
......
**// variable, shared_mutex and getter/setter for z**
......
};
double Test::x_getter()
{
// get shared access
boost::shared_lock lock(_access);
return x;
}
void Test::x_setter()
{
// get exclusive access
boost::unique_lock lock(_access);
// do something with x;
}
//getter/setter functions for y and z.
......
特に、メンバ変数の数が増えると、コードが不調に見えます。私はこのタイプの問題のためにそこに良い解決策があるのかどうか疑問に思っています。
ありがとうございました。
ありがとう、celtschk、私はあなたの方法を実装し、コードはもっときれいに見えます。 – 2607