Ich hatte ein ähnliches Problem mit einer ganz anderen Technologie: Twisted Python (Reaktor-basierte IO) und sqlAlchemy (??). Bei der Suche nach einer Lösung habe ich ein sAsync-Projekt gefunden, das einfach einen separaten Thread für sqlAlchemy erstellt und dann auf Anfragen geantwortet hat.
Vorausgesetzt, dass ASIO auf Low-Level-Betriebssystem-Funktionen (wie aio_read() oder ReadFileEx() usw.) und eine OS-Level-Reaktor (oder Proactor, in Windows 'Fall) Ich glaube nicht, dass Sie eine weitere Chance haben als die "Asynchronität" mit ähnlichen Mitteln nachzuahmen.
einen synchronen Anschluss in Threads laufen zu lassen ist keine Option
Denk darüber nach: die libmysqlclient/mysqlclient.dll
Sie macht Anrufe Synchronbuchse verwendet wird. Der OS-Scheduler wird korrekt zu einem anderen Thread wechseln, bis die E/A beendet ist. Worin besteht der Unterschied? (Abgesehen davon, dass Sie keine 2k-Threads dafür machen sollten.)
Edit: mysql_real_connect() unterstützt einen UNIX-Socket-Parameter. Sie können sich angeblich vom mysql-Server-Port lesen und nur mit ASIO in diesen UNIX-Socket schreiben. Wie eine Proxyfizierung.
Die Blockierung Verbindung ist ein ernstes Problem in dieser Implementierung, aber nichtsdestoweniger scheint zu tun, was ich ursprünglich angefordert habe. Das Nieselregenprojekt (https://launchpad.net/drizzle) arbeitet an einem asynchronen Client, der abwärtskompatibel mit Mysql ist (hier erwähnt: http://www.oddments.org/?p=20) –