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