次の方法で共有


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;
   }
};

必要条件

属性コンテキスト

対象

クラスメソッドメソッド

複数回の適用

必要な属性

次の一つ以上 : コクラス ProgIDまたは vi_progid

無効な属性

なし

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

参照

その他の技術情報

COM 属性

Attributes Samples