Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como acessar o MySQL de vários threads simultaneamente


Como mantenedor de um aplicativo C bastante grande que faz chamadas MySQL de vários threads, posso dizer que não tive problemas em simplesmente fazer uma nova conexão em cada thread. Algumas ressalvas que encontrei:
  • Editar:parece que este marcador só se aplica a versões <5.5; veja esta página para sua versão apropriada a> : Como você diz que já está fazendo, link para libmysqlclient_r .
  • Chame mysql_library_init() (uma vez, de main() ). Leia os documentos sobre o uso em ambientes multithread para ver por que isso é necessário.
  • Criar um novo MYSQL estrutura usando mysql_init() em cada fio. Isso tem o efeito colateral de chamar mysql_thread_init () para você. mysql_real_connect() como de costume dentro de cada encadeamento, com sua estrutura MYSQL específica do encadeamento.
  • Se você estiver criando/destruindo muitos tópicos, use mysql_thread_end() no final de cada thread (e mysql_library_end() no final de main() ). De qualquer forma, é uma boa prática.

Basicamente, não compartilhe MYSQL structs ou qualquer coisa criada específica para essa struct (ou seja, MYSQL_STMT s) e funcionará como você espera.

Isso parece menos trabalhoso do que fazer um pool de conexões para mim.