线程安全的PQconn对象

时间:2015-03-09 06:52:43

标签: c++ multithreading postgresql libpq

我想通过多个线程访问PostgreSQL表。如何在多线程中保护PQconn *对象? libpq库是否为此问题提供了任何方法?

1 个答案:

答案 0 :(得分:2)

与PostgreSQL的单一连接不支持同时查询。当查询处于活动状态时,除了可以从另一个线程或信号处理程序调用的PGconn之外,不可能将其PQcancel()结构重用于其他任何内容。

这来自客户端 - 服务器协议的设计,而不是libpq本身。

要在多个线程中实现并发查询,每个线程必须拥有自己的连接和自己对应的非共享PGconn结构。