2012-03-05 71 views
2


我使用的Postgres 9.0数据库中,在我的C程序中,我连接数据库只有一次 和使用叉子我生成过程中,所有我的孩子的程序共享连接 大部分时间它的工作原理正确地, 在某些情况下,子A会得到子B的查询错误,并且它也会得到查询超时问题以及所有Postgres的共享连接问题

我的问题是,共享连接有任何问题吗? 每秒它可以在最大创建1至5流程

注: 我永远不会关闭所有

回答

2

这不是一个好主意线程共享一个数据库连接,因为你会遇到连接你在你的问题中描述的确切问题:一个线程可以获得另一个线程请求的输出。相反,你会希望每个线程分开连接。如果你有很多线程,你可能需要考虑制作一个connection pool

+0

谢谢,但仅供参考我用叉子,您的答案适用于叉子和线程? ,请回复 – abubacker 2012-03-05 06:44:09

+1

是的。如果两个进程(由线程或通过'fork'启动)共享同一个数据库连接,那么数据库就无法告诉哪个进程发出了请求或者应该发送哪个进程输出。 – 2012-03-05 06:45:36

+4

这包括在文档中:http://www.postgresql.org/docs/9.1/static/libpq-connect.html(作为“不这样做”的情况) – 2012-03-06 01:54:40