异步C++连接器用于MySQL

4

在搜索关于mysql异步/非阻塞连接器的信息时,我基本上看到了这篇帖子

然而,现在跟进drizzle的情况有点混乱。在某个时间点上,libdrizzle是一个独立的依赖项,但他们决定将其与项目的其他部分合并。除了C++之外,还有其他异步访问数据库的选项吗?

我一直在查看OTLODBOpenDBX,但它们似乎都是同步的(需要单独的线程进行非阻塞操作)


异步连接有什么用处?您仍然需要同步等待其完成,而在长时间连接设置期间可以有用地完成的工作很少,这些工作在连接建立后也可以轻松快速地完成。 - wallyk
1
连接通常是最小的问题,因为它大多数时间都会被启动并重复使用一段时间:真正的问题在于查询不应该阻塞当前线程,而这个线程可以用来做其他事情。 - lurscher
2个回答

3

我有同样的需求并得出结论,这是不受支持的。即使使用MySQL C API,您也可以使用低级函数异步发出查询并等待响应,但您永远无法获得完全的异步结果收集--您总是从返回第一部分结果的时间开始阻塞,直到最后。

我没有直接经验,但我已经读过Postgres在C API中支持完全的异步性。


0

我曾经在自己的项目中使用过MySAC。虽然它有些过时,但是它工作得很好。我只引用了他们网站上的描述:

MySAC是一个库,提供了与MySQL数据库进行异步请求的机制。

如果你使用libuv,也许你会对https://github.com/huxingyi/myc感兴趣。这是一个由我编写的纯C MySQL连接器,您可以实现自己的网络层或者直接使用位于示例文件夹内的基于libuvuvmyc实现。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接