如何实现连接池?

时间:2015-06-14 17:30:00

标签: mysql c

我正在使用civetweb作为(websocket)服务器。我有一些处理程序,当我收到数据,将查询mysql。每次有请求时,这些都将作为一个线程产生。

到目前为止,我只使用了一个mysql连接数据库,我在程序启动时设置了数据库,并与mongoose库结合使用。但是对于线程请求,它让我感到头疼,因为从mysql_select()到mysql_store_result()之前mysql不是线程安全的。我试过在这些mysql函数周围放置一个mutex,但是perfomce会下降十倍(从~750个请求/秒到~75个请求/秒)。

处理此问题的正确方法是什么?我听说过“连接池”,但很难找到谷歌的一些简单例子(或者围绕一个理智的实现)。

我似乎不太可能是第一个遇到这样问题的人:)。

1 个答案:

答案 0 :(得分:0)

我不确定这对你有帮助。我把它放在评论中,但我还没有足够的声誉。

当我向我的应用程序添加多线程时,我在VB.NET中遇到了同样的问题。为了纠正它,我确保在所有查询之前调用connection.open并添加“pooling = true;”到我的mysql连接字符串的末尾。 Mysql将确定是否需要打开连接或使用现有连接。