Som underhållare av en ganska stor C-applikation som gör MySQL-anrop från flera trådar kan jag säga att jag inte har haft några problem med att helt enkelt göra en ny anslutning i varje tråd. Några varningar som jag har stött på:
- Redigera:det verkar som om denna punkt bara gäller versioner <5.5; se den här sidan för din lämpliga version : Som du säger att du redan gör, länka mot
libmysqlclient_r
. - Ring
mysql_library_init()
(en gång, frånmain()
). Läs dokumenten om användning i flertrådade miljöer för att se varför det är nödvändigt. - Skapa en ny
MYSQL
struktur medmysql_init()
i varje tråd. Detta har bieffekten att anropamysql_thread_init ()
till dig.mysql_real_connect()
som vanligt inuti varje tråd, med dess trådspecifika MYSQL-struktur. - Om du skapar/förstör många trådar vill du använda
mysql_thread_end()
i slutet av varje tråd (ochmysql_library_end()
i slutet avmain()
). Det är bra praxis i alla fall.
Dela i princip inte MYSQL
strukturer eller något skapat specifikt för den strukturen (dvs. MYSQL_STMT
s) och det kommer att fungera som du förväntar dig.
Det här verkar vara mindre arbete än att skapa en anslutningspool för mig.