Давно хочу, но стесняюсь, спросить - ибо до конца не уверен в своих знаниях.
Вопрос в том, что могут ли быть проблемы при использовании статического метода (например класса) в программе, у которой несколько потоков могут вызывать этот метод «одновременно»?
Конечно речь только о таких методах, где на входе какие данные, потом эти данные как-то кодируем/декодируем и возвращаем результат. То есть в самом классе или в общих для всех потоков данных - ничего не меняем.
Я пользуюсь такими методами в своей проге на qt, c++, windows и пока проблем не замечено, но все же душа не спокойна…
Предполагаю, что при переключении с потока на другой поток ОС сохраняет контекст прерванного потока на стеке прерванного потока, а новый поток использует свой контекст (стек) и получается вроде бы проблем не должно быть…
Меня смущает, что все это слишком удобно (в программировании), чтобы не было проблем. Удобно - имеется в виду, что память под статику определяется один раз, то есть не надо создавать/уничтожать ничего.
В общем давно сомневаюсь в перспективах данного подхода, но продолжаю пользоваться.
Программа, которую верстаю и некоторые клиенты уже пользуются, конечно периодически падает, но в основном при отсутствии нужных dll оборудования. Отслеживаю это запуском предварительного отдельного стартера, который получает логи от основного приложения. Это я к тому, что процесс идёт под кое-каким контролем. В конце стартер выгружает на сервер в инете логи.