Som vedligeholder af en ret stor C-applikation, der foretager MySQL-kald fra flere tråde, kan jeg sige, at jeg ikke har haft problemer med blot at lave en ny forbindelse i hver tråd. Nogle forbehold, som jeg er stødt på:
- Rediger:det ser ud til, at denne punkttegn kun gælder for versioner <5.5; se denne side for din passende version : Som du siger, du allerede gør, link mod
libmysqlclient_r. - Ring til
mysql_library_init()(en gang, framain()). Læs dokumenterne om brug i multitrådede miljøer for at se, hvorfor det er nødvendigt. - Lav en ny
MYSQLstruktur ved hjælp afmysql_init()i hver tråd. Dette har den bivirkning, at det kaldermysql_thread_init ()for dig.mysql_real_connect()som sædvanligt inde i hver tråd med dens trådspecifikke MYSQL-struktur. - Hvis du opretter/ødelægger mange tråde, vil du gerne bruge
mysql_thread_end()i slutningen af hver tråd (ogmysql_library_end()i slutningen af main()). Det er i hvert fald god øvelse.
Grundlæggende må du ikke dele MYSQL strukturer eller noget, der er oprettet specifikt til den pågældende struktur (dvs. MYSQL_STMT s), og det vil fungere, som du forventer.
Det virker som mindre arbejde end at lave en forbindelsespulje for mig.