1

ガベージ コレクション クラスに静的カウンターを保持し、Interlocked::Increment を使用してインクリメントしたいと考えています。これを行うための C++/CLI 構文は何ですか?

私は次のバリエーションを試してきましたが、今のところうまくいきません:

ref class Foo
{
   static __int64 _counter;

   __int64 Next()
   {
      return System::Threading::Interlocked::Increment( &_counter );
   }

};
4

3 に答える 3

5

% トラッキング参照表記を使用して、値へのトラッキング参照を使用する必要があります。_int64

ref class Bar
{
    static __int64 _counter;

    __int64 Next()
    {
        __int64 %trackRefCounter = _counter;
        return System::Threading::Interlocked::Increment(trackRefCounter);
    }
};
于 2008-12-04T22:11:07.120 に答える
3

address-of 演算子を削除するだけです。

return System::Threading::Interlocked::Increment( _counter );

C++/CLI では、C++ と同様に、参照渡しのための特別な表記法はありません。

InterlockedIncrement64または、ネイティブ関数( #include <windows.h>)を使用できます。

return ::InterlockedIncrement64(&_counter);
于 2011-07-18T19:59:18.000 に答える