Вызов метода в другом потоке
В моем классе существует метод, который должен вызвать другой свой же метод в другом потоке. Компилятор такую ошибку выдает в строке std::thread th(run);
error C3867: "Timer::run": нестандартный синтаксис; используйте "&", чтобы создать указатель на член
void Timer::start()
{
std::thread th(run);
th.detach();
}
void Timer::run()
{
...
}
реализация метода run на ошибку никак не влияет.
Ответы (1 шт):
Автор решения: Alex Titov
→ Ссылка
В конструкторе потока надо передать аргументы функции, а у функций класса есть неявный аргумент - собствено объект класса, так что запишите
std::thread th(&Timer::run, this); // сработало и в MSVC
// std::thread th(run, this); // этот вариант сработал только на g++
З.Ы. Проверил сперва только на g++