C ++ 11 Когда использовать ограждение памяти?

пишу какой-то многопоточный код C ++ 11, и яЯ не совсем уверен, когда мне нужно использовать забор памяти или что-то. Так вот в основном то, что яя делаю:

class Worker
{
   std::string arg1;
   int arg2;
   int arg3;
   std::thread thread;

public:
   Worker( std::string arg1, int arg2, int arg3 )
   {
      this->arg1 = arg1;
      this->arg2 = arg2;
      this->arg3 = arg3;
   }

   void DoWork()
   {
      this->thread = std::thread( &Worker::Work, this );
   }

private:
   Work()
   {
      // Do stuff with args
   }
}

int main()
{
   Worker worker( "some data", 1, 2 );
   worker.DoWork();

   // Wait for it to finish
   return 0;
}

Мне было интересно, какие шаги мне нужно предпринять, чтобы убедиться в безопасности доступа к аргументам в функции Work (), которая выполняется в другом потоке. Достаточно ли этого?s написано в конструкторе, а затем поток создается в отдельной функции? Или мне нужно ограничение памяти, и как сделать ограничение памяти, чтобы убедиться, что все 3 аргумента записаны основным потоком, а затем прочитаны рабочим потоком?

Спасибо за любую помощь!

Ответы на вопрос(1)

Ваш ответ на вопрос