@Sazoks

Корректно ли из разных потоков вызывать одну и ту же функцию?

Есть объекты класса А, каждый из которых хранит в себе ссылку на 1 объект класса Б.
Все эти объекты я помещаю в потоки с помощью moveToThread().
Каждый объект класса А в ходе своей работы вызывает метод из объекта класса Б.
Скажите, это нормальная практика, или может быть какая ошибка в случае, когда 2 объекта А одновременно вызывают метод из Б?
Спасибо.
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
это нормальная практика, или может быть какая ошибка в случае, когда 2 объекта А одновременно вызывают метод из Б?

Зависит от того как устроен и куда обращается этот метод. Если он прямо или косвенно обращается к изменяемым глобальным данным без синхронизации или использования атомарного доступа -- может быть ошибка.

Например, обращение к любой из переменных global/class_static/function_static в следующем коде -- потенциальная ошибка:
int global;

class B
{
    static int class_static;
public:
    void f()
    {
        static int function_static;
    }
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы