sql >> Database teknologi >  >> RDS >> Mysql

Sådan får du adgang til MySQL fra flere tråde samtidigt

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, fra main() ). 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 af mysql_init() i hver tråd. Dette har den bivirkning, at det kalder mysql_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 (og mysql_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.



  1. Kan ikke åbne databasen i læse-/skrivetilstand

  2. Udfør SQL-script for at oprette tabeller og rækker

  3. ændre standard datoformat laravel sql-forespørgsel

  4. The Eager Index Spool og The Optimizer