8.4.8 Как создать клиентскую программу с потоками - часть 3
При вызове функции MySQL до того, как поток вызвал функции mysql_init() или mysql_connect(), данный поток в этом случае не будет иметь необходимых специальных переменных потока и, вероятно, программа рано или поздно умрет с дампом оперативной памяти.
Для более плавной работы программы необходимо выполнить следующие действия:
Вызвать функцию my_init() при запуске данной программы, если она вызывает какую-либо другую функцию MySQL до вызова функции mysql_real_connect().
Вызвать функцию mysql_thread_init() в обработчике потока до вызова иной функции MySQL.
В данном потоке вызвать функцию mysql_thread_end() перед вызовом pthread_exit(). Это освободит память, занятую специальными переменными потока для MySQL.
Следует учитывать, что можно получить некоторые ошибки из-за наличия неопределенных символов при связывании клиента с библиотекой libmysqlclient_r. В большинстве случаев это происходит вследствие того, что в строку связывания/компилирования не включены библиотеки потока.