Como mantenedor de una aplicación C bastante grande que realiza llamadas MySQL desde múltiples subprocesos, puedo decir que no he tenido problemas con simplemente hacer una nueva conexión en cada subproceso. Algunas advertencias con las que me he encontrado:
- Editar:parece que esta viñeta solo se aplica a las versiones <5.5; vea esta página para su versión apropiada : Como dices que ya estás haciendo, vincula contra
libmysqlclient_r
. - Llame a
mysql_library_init()
(una vez, desdemain()
). Lea los documentos sobre el uso en entornos multiproceso para ver por qué es necesario. - Crear un nuevo
MYSQL
estructura usandomysql_init()
en cada hilo. Esto tiene el efecto secundario de llamar amysql_thread_init()
para usted.mysql_real_connect()
como de costumbre dentro de cada subproceso, con su estructura MYSQL específica del subproceso. - Si está creando/destruyendo muchos hilos, querrá usar
mysql_thread_end()
al final de cada hilo (ymysql_library_end()
al final demain()
). Es una buena práctica de todos modos.
Básicamente, no comparta MYSQL
estructuras o cualquier cosa creada específicamente para esa estructura (es decir, MYSQL_STMT
s) y funcionará como esperas.
Esto me parece menos trabajo que hacer un grupo de conexiones.