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