Pregunta

¿Existe algún conector asíncrono para Mysql que pueda usarse dentro de una aplicación C o C++?Estoy buscando algo que se pueda conectar a un patrón del reactor escrito en Impulso.Asio.

[Editar:] Ejecutar un conector síncrono en subprocesos no es una opción.

¿Fue útil?

Solución

http://forums.mysql.com/read.php?45,183339,183339disfrutar

Enlace actualizado al artículo original que muestra cómo realizar consultas asincrónicas de MySQL:

http://jan.kneschke.de/projects/mysql/async-mysql-queries-with-c-api/

Otros consejos

Tuve un problema similar con tecnologías muy diferentes:Python trenzado (IO basado en reactor) 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 características del sistema operativo de bajo nivel (como aio_read() o ReadFileEx(), etc.) y un reactor de nivel del sistema operativo (o proactor, en el caso de Windows), no creo que tengas otra oportunidad que emular el ' asincronía' por medios similares.

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

Piénsalo:el libmysqlclient / mysqlclient.dll que estás utilizando realiza llamadas de socket sincrónicas.El programador 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 crear 2k hilos para esto...)

Editar:mysql_real_connect() admite un parámetro de socket UNIX.Supuestamente puedes leerte a ti mismo desde el puerto del servidor MySQL y escribir en ese socket UNIX solo usando ASIO.Como una representación.

[ Ejecutar un conector sincrónico en hilos no es una opción, piense en ello:el libmysqlclient/mysqlclient.dll que estás usando realiza llamadas de socket sincrónicas.El programador 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 debería ser manejado por mysql tal como lo haría con otro cliente?Mi intuición es que debería funcionar con varios subprocesos.

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

Los clientes de referencia que utilizan MySQL Connector/C++ son:- OpenOffice - Banco de trabajo MySQL

Aprende más: http://forums.mysql.com/read.php?167,221298

Hay un proyecto llamado DBSlayer que pone otra capa delante de MySQL con la que hablas a través de JSON. http://code.nytimes.com/projects/dbslayer

¿Has considerado usar libdrizzle?He usado solo una versión antigua, de cuando era un proyecto separado de drizzle, y probé las funciones de consulta asincrónica, pero nunca hice ningún punto de referencia real que valga la pena mencionar.

Creo que la única solución será crear un servicio asincrónico que envuelva un conector estándar.Sin embargo, necesitarás comprender las API de ODBC.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top