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
MYSQLstruktur 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.