Как правильно выполнить метод класса в потоке? Вот есть у нас класс MyClass, и в этом классе есть метод, который по определенному условию вызывает другой метод в новом потоке, вот только я не совсем уверен, что делаю это правильно. Поэтому обращаюсь к вам. Вот как сделал я:std::thread NewThread(&ClientThread, *this, NewConn); Не буду много разглагольствовать.. Меня смущает *this. Спасибо.
Для выполнения метода класса в новом потоке, правильным способом будет передача указателя на метод и объект класса в конструктор std::thread таким образом:
Здесь MyClass::ClientThread - указатель на метод ClientThread класса MyClass, this - указатель на объект класса MyClass, а NewConn - аргументы метода ClientThread.
В данном случае использование *this неверно, так как это будет попытка разыменования указателя на объект класса, что недопустимо в данном контексте.
Таким образом, исправленный вариант создания нового потока должен выглядеть примерно так:
Для выполнения метода класса в новом потоке, правильным способом будет передача указателя на метод и объект класса в конструктор std::thread таким образом:
std::thread NewThread(&MyClass::ClientThread, this, NewConn);Здесь MyClass::ClientThread - указатель на метод ClientThread класса MyClass, this - указатель на объект класса MyClass, а NewConn - аргументы метода ClientThread.
В данном случае использование *this неверно, так как это будет попытка разыменования указателя на объект класса, что недопустимо в данном контексте.
Таким образом, исправленный вариант создания нового потока должен выглядеть примерно так:
std::thread NewThread(&MyClass::ClientThread, this, NewConn);Полученный поток будет запускать метод ClientThread объекта класса MyClass с аргументами NewConn в новом потоке.