2015-07-16 9 views
0

Если я разделил объект между двумя потоками (передавая указатель на void объекту), что произойдет, если они оба попытаются вызвать (разные) методы одновременно? Меня не волнуют сами переменные-члены, есть мьютексы на месте по другим причинам, которые, к счастью, уже покрывают это. Основная функция - вызов непересекающихся методов, поэтому нет возможности перекрытия таким образом, но я не был уверен, что будет поведением, если основные вызовы thing.a(), в то время как thread вызывает thing.b() одновременно (или даже если они просто перекрываются в этом отношении).Одновременные вызовы объектов

+0

Если они не могут одновременно обращаться к любому члену объекта, не должно быть никаких проблем. Позаботьтесь о том, чтобы поделиться некоторым примером кода, чтобы мы могли говорить об особенностях? –

+0

Функции (включая функции-члены) не влияют на расы данных при многопоточности. Только данные защиты (только переменные-члены). –

ответ

1

Ничего особенного не произойдет, каждый поток имеет свой собственный стек, и каждый вызов (даже если бы он был для той же функции) имел бы свой собственный кадр вызова и собственный набор аргументов и локальных переменных.

+0

Прохладный, вот что я предположил, но я хотел дважды проверить, потому что я не мог найти ничего определенного –

Смежные вопросы