0

このようなものを作ることは可能ですか?

...
class test{
int i;
public:
      test(int k):i(k){};
      void my(){
         cout<<i;
      }
}
atomic<test> kk(0);
kk.test();
...

これが不可能な場合、アトミックになるように関数を呼び出す方法は?

4

2 に答える 2

1

非数値オブジェクトを保持するオブジェクトを作成できます。std::atomic主な制限は、含まれる型が自明にコピー可能でなければならないということです。大まかに言えば(これが実装方法であるため)、これは、とのコピーmemcpyは問題なく、との比較memcmpは意味があることを意味します。ただし、格納されたオブジェクトでメンバー関数を呼び出すことはできません。格納されたオブジェクトをコピーし、更新を行ってから、結果をアトミック オブジェクトにコピーする必要があります。

于 2013-06-10T19:20:38.030 に答える