Вызов функции из разных потоков блокируется?C++

Программы на C++. Форум разработчиков
Anonymous
Вызов функции из разных потоков блокируется?

Сообщение Anonymous »

У меня есть класс Animal

Код: Выделить всё

    class Animal
{
public:

int operator()(const int n=4)
{
// do something that takes a while(~1 ms)
return n*5;
}
};
Если я создам два потока, каждый из которых имеет доступ к одному экземпляру Animal, будут ли вызовы функций выполняться параллельно? Или второй поток должен дождаться завершения первого?
Чтобы быть более конкретным, внутри каждого потока у меня есть указатель на один и тот же экземпляр Animal и внутри потока, который я вызываю ( *pointer_to_animal)(10);
Я понимаю, что при доступе к данным из обоих потоков могут возникнуть условия гонки, но поскольку все переменные, используемые внутри функции, передаются в или создан в стеке, условий гонки нет. Я бы хотел, чтобы два потока выполнялись параллельно для одного и того же экземпляра Animal.

Подробнее здесь: https://stackoverflow.com/questions/654 ... s-blocking

Вернуться в «C++»