Если вы используете MySQL Connector/C++ с потоками, вы должны инкапсулировать MySQL-часть в sql::Driver::threadInit()
и sql::Driver::threadEnd()
.
Я нашел другой аналогичный вопрос here.
Перед тем, как использовать любую другую функцию соединителя внутри нити, вы можете написать что-то вроде
sql::Driver *driver = get_driver_instance(); // should be synchronized
driver->threadInit();
И до остановки резьбы, но после всех других MySQL-материала, вы можете написать somethink как
driver->threadEnd();
Также кажется, что get_driver_instance()
не является потокобезопасным. Иногда я получаю ошибки сегментации, если я не синхронизирую его. В моем случае у меня была ошибка сегментации при инициализации примерно в одном из двух тестов. Поскольку я синхронизую вызов get_driver_instance()
, у меня не было ошибки сегментации прямо сейчас.
Wow! Получена такая же ошибка. Но почему он поднимается? Есть ли «истинные» или «правильные» способы избежать этой ошибки? – troyane
не удалось найти эту функцию в моей библиотеке. Я использую cppconn. где эта функция? Благодарю. – NoviceCai