Като поддържащ доста голямо C приложение, което прави MySQL извиквания от множество нишки, мога да кажа, че не съм имал проблеми просто да направя нова връзка във всяка нишка. Някои предупреждения, на които се натъкнах:
- Редактиране:изглежда, че този куршум се отнася само за версии <5.5; вижте тази страница за вашата подходяща версия : Както казвате, че вече го правите, свържете се с
libmysqlclient_r
. - Обадете се на
mysql_library_init()код>
(веднъж, отmain()
). Прочетете документите за използването в многонишкови среди, за да видите защо е необходимо. - Направете нов
MYSQL
структура, използващаmysql_init()
във всяка нишка. Това има страничния ефект от извикването наmysql_thread_init ()
за теб.mysql_real_connect()
както обикновено във всяка нишка, с нейната специфична за нишка MYSQL структура. - Ако създавате/унищожавате много нишки, ще искате да използвате
mysql_thread_end()
в края на всяка нишка (иmysql_library_end()
в края наmain()
). Така или иначе е добра практика.
По принцип не споделяйте MYSQL
структури или нещо създадено специфично за тази структура (т.е. MYSQL_STMT
s) и ще работи, както очаквате.
Това ми изглежда по-малко работа от създаването на пул за връзки.