- ВКонтакте
- РћРТвЂВВВВВВВВнокласснРСвЂВВВВВВВВРєРСвЂВВВВВВВВ
- РњРѕР№ Р В Р’В Р РЋРЎв„ўР В Р’В Р РЋРІР‚ВВВВВВВВРЎР‚
- Viber
- Skype
- Telegram
c++ можно ли статический метод класса использовать из разных потоком одновременно?
Давно сомневаюсь с использованием статического метода класса из разных потоков. В программе, которую я пишу есть уже три потока. Все работает пока стабильно.
И есть желание вынести некотрый общий функционал в static метод, т.к. это просто удобно использовать на мой взгляд.
Сразу скажу, что статический метод класса ничего не меняет в самом классе, просто на входе что-то типа строки на выходе например QByteArray, идет просто кодирование или декодирование входного парметра.
Как я бы хотел предоположить, что разные потоки открывая этот метод создают каждый на своем стеке свой контекст, то есть входной параметр свой, возвращаемый параметр свой, локальные переменные (внутри статического метода) тоже на своем стеке.
И вроде бы когда поток прерывает другой поток, то он сохраняет контекст выполнения прерванного потока на стеке и потом при выходе восстанавливает контект преванного потока.
И вроде бы получается, что мьютексы для синхронизации не нужны.
Но боюсь поверить, что проблем не будет никаких? Qt4, msvc-2010, C++98.
Ответы (1 шт):
Смотрите.
Синхронизация нужна, если разные потоки используют общие данные. И это не зависит от того, используется у вас статический метод или нет.
Если ваши вызовы не работают с общими данными, то синхронизация не нужна.