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 аргумента записаны основным потоком, а затем прочитаны рабочим потоком?
Спасибо за любую помощь!