Если вы используете MySQL Connector / C ++ с потоками, вы должны инкапсулировать свою часть mysql в sql::Driver::threadInit()
и sql::Driver::threadEnd()
.
Я нашел другой похожий вопрос здесь .
Прежде чем использовать какую-либо другую функцию соединителя внутри потока, вы можете написать что-то вроде
sql::Driver *driver = get_driver_instance(); // should be synchronized
driver->threadInit();
И до того, как поток прекратится, но после всех других вещей, связанных с MySQL, вы можете написать что-то вроде
driver->threadEnd();
Также кажется, что get_driver_instance()
не является потокобезопасным. Иногда я получаю ошибки сегментации, если не синхронизирую их. В моем случае у меня была ошибка сегментации при инициализации в одном из двух тестов. Поскольку я синхронизирую вызов с get_driver_instance()
, у меня сейчас не было ошибки сегментации.