2012-03-05 4 views
2


나는 포스트 그레스 내 C 프로그램에서 내가 한 번만 데이터베이스를 연결 9.0 데이터베이스를 사용하여 내 모든 아동 프로그램의 주 연결이 은 대부분의 시간을 작동 프로세스를 생성 포크를 사용하고 올바르게, 경우에 따라 자식 A가 자식 B의 쿼리 오류를 가져오고 쿼리 시간 초과 문제 및 모두를 가져옵니다포스트 그레스 공유 연결 문제

내 질문은 연결을 공유하는 데 문제가 있습니까? 당 두 번째는 최대에

주를 1 ~ 5 프로세스를 만들 수 있습니다 : 모든

답변

2

당신이로 실행하는 것이기 때문에 스레드가 하나의 데이터베이스 연결을 공유하는 것은 좋은 생각이 아니다의 연결을 닫습니다 결코 I 귀하의 질문에 설명 된 정확한 문제 : 하나의 스레드가 다른 스레드의 요청을 출력 할 수 있습니다. 대신 각 스레드를 개별적으로 연결해야합니다. 스레드가 많은 경우 connection pool을 작성하는 것이 좋습니다.

+0

감사합니다.하지만 저는 포크를 사용했습니다. 답변이 포크와 스레드 모두에 적용됩니까? 친절하게 회신 – abubacker

+1

예. 만약 두개의 프로세스 (쓰레드에 의해 시작되거나'fork'를 통해 시작됨)가 동일한 데이터베이스 연결을 공유하면, 데이터베이스는 어떤 프로세스가 요청을했는지 또는 어느 프로세스로 출력을 보내야하는지 알릴 방법이 없습니다. –

+4

이 내용은 다음 문서에서 다룹니다. http://www.postgresql.org/docs/9.1/static/libpq-connect.html ("하지 마십시오") –