Вопрос

Существуют ли какие-либо асинхронные соединители для Mysql, которые можно использовать в приложении на C или C ++?Я ищу что-то, что можно подключить к схема реактора написанный на Boost.Asio.

[Редактировать:] Запуск синхронного соединителя в потоках - это не вариант.

Это было полезно?

Решение

http://forums.mysql.com/read.php?45 ,183339,183339 наслаждайтесь

Обновлена ссылка на оригинальную статью, показывающую, как выполнять асинхронные запросы mysql:

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

Другие советы

У меня была похожая проблема с совсем другими технологиями: Twisted python (IO на основе реактора) и sqlAlchemy (??). При поиске решения я обнаружил проект sAsync, который просто создал отдельный поток для sqlAlchemy, а затем ответил на запросы.

Учитывая, что ASIO основан на низкоуровневых функциях ОС (таких как aio_read () или ReadFileEx () и т. д.) и реакторе на уровне ОС (или proactor, в случае Windows), я не думаю, что у вас есть другой шанс, кроме эмулируя асинхронность подобными средствами.

  

Запуск синхронного соединителя в потоках не вариант

Подумайте об этом: используемый вами libmysqlclient / mysqlclient.dll делает синхронные вызовы сокетов. Планировщик ОС будет корректно переключаться на другой поток, пока не завершится ввод-вывод, так в чем же разница? (кроме того, что вы не должны создавать 2k потоков для этого ..)

Редактировать: mysql_real_connect () поддерживает параметр сокета UNIX. Можно предположить, что вы сами читаете с порта сервера mysql и записываете в этот сокет UNIX только с использованием ASIO. Как проксификация.

[ Запуск синхронного соединителя в потоках не вариант Подумайте об этом: используемая вами libmysqlclient / mysqlclient.dll делает синхронные вызовы сокетов. Планировщик ОС будет корректно переключаться на другой поток до завершения ввода-вывода ]

Это меня беспокоит! - «другой поток» также может быть второй синхронизацией. подключение к mysql, и должно быть обработано mysql так же, как это будет вообще с другим клиентом? Мне нравится то, что он должен работать с использованием нескольких потоков.

MySQL, Connector / C ++ - это реализация CD для JDBC 4.0

Клиентами, использующими MySQL Connector / C ++, являются: - OpenOffice - MySQL Workbench

Подробнее ... http://forums.mysql.com/read.php? 167,221298

Существует проект DBSlayer, который ставит другой уровень перед MySQL, с которым вы общаетесь через JSON. http://code.nytimes.com/projects/dbslayer

рассматривали ли вы возможность использования libdrizzle ? Я использовал только старую версию, с того момента, когда это был отдельный проект от моросящего дождя, и я протестировал функции асинхронных запросов, но я никогда не делал никаких реальных тестов, достойных упоминания.

Я думаю, что единственным решением будет создание асинхронной службы, которая обернет стандартный разъем . Вы должны понимать API ODBC.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top