@Sazoks

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

Есть объекты класса А, каждый из которых хранит в себе ссылку на 1 объект класса Б.
Все эти объекты я помещаю в потоки с помощью moveToThread().
Каждый объект класса А в ходе своей работы вызывает метод из объекта класса Б.
Скажите, это нормальная практика, или может быть какая ошибка в случае, когда 2 объекта А одновременно вызывают метод из Б?
Спасибо.
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
это нормальная практика, или может быть какая ошибка в случае, когда 2 объекта А одновременно вызывают метод из Б?

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

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

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

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

Войти через центр авторизации
Похожие вопросы
SDT Москва
от 100 000 до 160 000 ₽
Graebert Санкт-Петербург
До 3 000 $
МТТ Москва
от 100 000 ₽
28 сент. 2020, в 00:10
15000 руб./за проект
27 сент. 2020, в 21:54
15000 руб./за проект