synchronize
適用先メソッドへのアクセスの同期をとります。
[synchronize]
解説
C++ 属性 synchronize は、オブジェクトの適用先メソッドの同期をとるためのサポートを実装します。 この同期では、適用先メソッドのアクセスを制御することによって、クラスのメソッドなど、共通のリソースを複数のオブジェクトで使用できます。
この属性によって挿入されたコードは、スレッド モデルで指定される適切な Lock メソッドを適用先メソッドの先頭で呼び出します。 メソッドが終了すると、自動的に Unlock が呼び出されます。 これらの関数の詳細については、「CComAutoThreadModule::Lock」を参照してください。
この属性を使用する場合は、同じ要素に対して coclass、progid、または vi_progid の各属性 (あるいは、これらの 1 つを表す別の属性) も適用する必要があります。 1 つの属性を使用すると、ほかの 2 つは自動的に適用されます。 たとえば、progid を適用すると、vi_progid および coclass も適用されます。
使用例
CMyClass オブジェクトの UpdateBalance メソッドに必要な同期を提供するコードを次に示します。
// cpp_attr_ref_synchronize.cpp
// compile with: /LD
#define _ATL_ATTRIBUTES
#include "atlbase.h"
#include "atlcom.h"
[module(name="SYNC")];
[coclass,
threading(both),
vi_progid("MyProject.MyClass"),
progid("MyProject.MyClass.1"),
uuid("7a7baa0d-59b8-4576-b754-79d07e1d1cc3")
]
class CMyClass {
float m_nBalance;
[synchronize]
void UpdateBalance(float nAdjust) {
m_nBalance += nAdjust;
}
};
必要条件
属性コンテキスト
対象 |
クラス メソッド、メソッド |
複数回の適用 |
不要 |
必要な属性 |
以下の順で 1 つ以上の文字が続くコクラス、 progid、または vi_progid。 |
無効な属性 |
[なし] |
属性コンテキストの詳細については、「属性コンテキスト」を参照してください。