次の方法で共有


synchronize

ターゲット メソッドへのアクセスを同期します。

構文

[synchronize]

解説

synchronize C++ 属性は、オブジェクトのターゲット メソッドを同期するためのサポートを実装します。 同期では、ターゲット メソッドのアクセスを制御することで、複数のオブジェクトが共通のリソース (クラスのメソッドなど) を使用できます。

この属性によって挿入されたコードは、ターゲット メソッドの先頭にある適切な Lock メソッド (スレッド モデルによって決まります) を呼び出します。 メソッドが終了すると、Unlock が自動的に呼び出されます。 これらの関数の詳細については、「CComAutoThreadModule::Lock」を参照してください。

この属性を使用するには、 coclassprogid、または vi_progid 属性 (または、これらのいずれかを意味する別の属性) も同じ要素に適用する必要があります。 いずれか 1 つの属性を使用すると、他の 2 つも自動的に適用されます。 たとえば、progid が適用されている場合、vi_progidcoclass も適用されます。

次のコードは、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;
   }
};

必要条件

属性コンテキスト Value
適用対象 クラス メソッド、メソッド
反復可能 いいえ
必要な属性 coclassprogidvi_progid のいずれか。
無効な属性 なし

属性コンテキストの詳細については、「 属性コンテキスト」を参照してください。

関連項目

COM 属性