Вызов функции из разных потоков блокируется?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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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