synchronize
ターゲット メソッドへのアクセスを同期します。
[synchronize]
解説
ターゲット オブジェクトのメソッドを同期する 同期 C++ 属性の実装をサポートします。 同期は複数のオブジェクトをターゲット メソッドのアクセスを制御することにより共通リソース (クラスのメソッドなど) を使用できるようになります。
この属性によって挿入されるコードは対象メソッドの先頭に Lock の適切なメソッド (スレッド モデルによって決まります) が呼び出されます。 メソッドが終了するとUnlock は自動的に呼び出されます。 これらの関数の詳細についてはCComAutoThreadModule:: ロック を参照してください。
この属性は コクラスProgIDまたは vi_progid の属性 (そのうちの 1 つを意味する属性を適用することを同じ要素に必要です。 の一つの属性が使用されそのほかの 2 つが自動的に適用されます。 たとえばProgID が適用されている場合vi_progid と コクラス も適用されます。
使用例
次のコードは 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;
}
};
必要条件
属性コンテキスト
対象 |
クラスメソッドメソッド |
複数回の適用 |
X |
必要な属性 |
次の一つ以上 : コクラス ProgIDまたは vi_progid。 |
無効な属性 |
なし |
属性コンテキストの詳細については、「属性コンテキスト」を参照してください。