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
MYSQL
struktur 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.