У меня была аналогичная проблема с очень разными технологиями: витой python (основанный на реакторе IO) и sqlAlchemy (??). Во время поиска решения я нашел о проекте sAsync, который просто создал отдельный поток для sqlAlchemy, а затем ответил на запросы.
Учитывая, что ASIO основан на низкоуровневых функциях ОС (таких как aio_read() или ReadFileEx() и т. Д.) И реактора уровня ОС (или проактора в Windows), я не думаю, что у вас есть еще один шанс чем эмуляция «асинхронности» с помощью аналогичных средств.
Запуск синхронного разъема в резьбе не вариант
Подумайте об этом: libmysqlclient/mysqlclient.dll
вы используете делает синхронные вызовы сокета. Планировщик ОС правильно переключится на другой поток до тех пор, пока ввод-вывод не будет завершен, так что в чем разница? (кроме того, что вы не должны создавать потоки 2k для этого ..)
Редактировать: mysql_real_connect() поддерживает параметр сокета UNIX. Вы можете, предположительно, прочитать себя с порта сервера mysql и записать в этот сокет UNIX только с помощью ASIO. Как проксификация.
Блокировка подключения является серьезной проблемой в этой реализации, но, тем не менее, похоже, делает то, что я изначально запросил. Проект дождя (https://launchpad.net/drizzle) работает над асинхронным клиентом, который будет обратно совместим с Mysql (упомянутый здесь: http://www.oddments.org/?p=20) – 2008-10-09 08:05:21