example c++ mysql c asynchronous boost-asio

c++ - example - Conector Mysql asincrónico



mysql download (7)

¿Existen conectores asíncronos para Mysql que se puedan usar dentro de una aplicación C o C ++? Estoy buscando algo que pueda ser conectado a un modelo de reactor escrito en Boost.Asio .

[Editar:] La ejecución de un conector síncrono en los hilos no es una opción.


Tuve un problema similar con tecnologías muy diferentes: Twisted python (reactor-basado IO) y sqlAlchemy (??). Mientras buscaba una solución, encontré un proyecto sAsync que simplemente creaba un hilo separado para sqlAlchemy y luego respondía a las solicitudes.

Dado que ASIO se basa en funciones de bajo nivel del sistema operativo (como aio_read () o ReadFileEx (), etc.) y un reactor de nivel de sistema operativo (o proactor, en el caso de Windows), no creo que tenga otra oportunidad que emular el '' asincrónica ''por medios similares.

Ejecutar un conector síncrono en hilos no es una opción

Piénselo: el libmysqlclient / mysqlclient.dll que está utilizando hace llamadas de socket síncronas. El planificador del sistema operativo cambiará correctamente a otro subproceso hasta que finalice la E / S, entonces, ¿cuál es la diferencia? (aparte del hecho de que no deberías hacer 2k hilos para esto ...)

Editar: mysql_real_connect () admite un parámetro de socket UNIX. Supuestamente puede leerse desde el puerto del servidor mysql y escribir en ese socket UNIX solo con ASIO. Como una alterficación.



[ Ejecutar un conector síncrono en subprocesos no es una opción Piénselo: el libmysqlclient / mysqlclient.dll que está utilizando realiza llamadas de socket síncronas. El planificador del sistema operativo cambiará correctamente a otro subproceso hasta que finalice la E / S ]

Esto me está molestando! - el ''otro hilo'' podría ser fácilmente una segunda sincronización. conexión a mysql, y debe ser manejado por mysql como lo haría con otro cliente en total? Mi instinto es que debería funcionar usando múltiples hilos.


MySQL Connector / C ++ es una implementación en C ++ de JDBC 4.0

Los clientes de referencia que usan MySQL Connector / C ++ son: - OpenOffice - MySQL Workbench

Obtenga más información: http://forums.mysql.com/read.php?167,221298


¿Has considerado usar libdrizzle ? He utilizado solo una versión anterior, desde que era un proyecto separado de la llovizna, y probé las funciones de consulta asincrónicas, pero nunca hice ningún punto de referencia real que valga la pena mencionar.


Creo que la única solución será crear un servicio asíncrono que envuelva un conector estándar . Sin embargo, deberá comprender las API de ODBC.