我有同样的需求并得出结论,这是不受支持的。即使使用MySQL C API,您也可以使用低级函数异步发出查询并等待响应,但您永远无法获得完全的异步结果收集--您总是从返回第一部分结果的时间开始阻塞,直到最后。
我没有直接经验,但我已经读过Postgres在C API中支持完全的异步性。
我曾经在自己的项目中使用过MySAC。虽然它有些过时,但是它工作得很好。我只引用了他们网站上的描述:
MySAC是一个库,提供了与MySQL数据库进行异步请求的机制。
如果你使用libuv,也许你会对https://github.com/huxingyi/myc感兴趣。这是一个由我编写的纯C MySQL连接器,您可以实现自己的网络层或者直接使用位于示例文件夹内的基于libuv
的uvmyc
实现。