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

Come accedere a MySQL da più thread contemporaneamente

Come manutentore di un'applicazione C abbastanza grande che effettua chiamate MySQL da più thread, posso dire di non aver avuto problemi semplicemente creando una nuova connessione in ogni thread. Alcuni avvertimenti che ho riscontrato:

  • Modifica:sembra che questo punto elenco si applichi solo alle versioni <5.5; vedere questa pagina per la versione appropriata : Come dici che stai già facendo, collega a libmysqlclient_r .
  • Chiama mysql_library_init() (una volta, da main() ). Leggi i documenti sull'uso in ambienti multithread per capire perché è necessario.
  • Crea un nuovo MYSQL struttura utilizzando mysql_init() in ogni thread. Questo ha l'effetto collaterale di chiamare mysql_thread_init() per te. mysql_real_connect() come al solito all'interno di ogni thread, con la sua struttura MySQL specifica per il thread.
  • Se stai creando/distruggendo molti thread, ti consigliamo di utilizzare mysql_thread_end() alla fine di ogni thread (e mysql_library_end() alla fine di main() ). È comunque una buona pratica.

Fondamentalmente, non condividere MYSQL struct o qualsiasi cosa creata specifica per quella struttura (ad esempio MYSQL_STMT s) e funzionerà come previsto.

Mi sembra meno faticoso che creare un pool di connessioni.