2012-03-05 14 views
2


私はpostgresに私のCプログラムでは、私は一度だけ データベースに接続9.0データベースを使用して、私はすべての私の子プログラムを共有接続が は、ほとんどの時間、それが動作するプロセスを生成フォークを使用しています 場合によっては、子Aが子Bのクエリエラーを取得し、クエリタイムアウトの問題をすべて取得します。postgresの共有接続の問題

私の質問は、接続を共有するのに間違いがありますか?毎秒 それが最大

注で1〜5のプロセスを作成することがあります。 私はあなたに実行されますので、それは、スレッドが単一のデータベース接続を共有するための良いアイデアではありませんすべての

答えて

2

の接続を閉じたことがありませんあなたの質問で述べた正確な問題:あるスレッドは別のスレッドの要求の出力を得ることができます。代わりに、各スレッドを別々に接続する必要があります。スレッドがたくさんある場合は、connection poolとすることをお勧めします。

+0

ありがとうございますが、私はフォークを使用しましたが、答えはフォークとスレッドの両方に適用されますか?親切に返信 – abubacker

+1

はい。 2つのプロセス(スレッドまたはフォークによって開始される)が同じデータベース接続を共有する場合、データベースはどのプロセスが要求を出したか、またはどのプロセスに出力を送信するかを知らせる方法がありません。 –

+4

これは、http://www.postgresql.org/docs/9.1/static/libpq-connect.htmlのドキュメントでカバーされています(「しないでください」の場合)。 –