libpq기본적으로 재진입 및 스레드 안전입니다. 응용 프로그램 코드를 컴파일 할 때 특수 컴파일러 명령 줄 옵션을 사용해야 할 수도 있습니다. 스레드 가능 응용 프로그램을 구축하는 방법에 대한 정보는 시스템 문서를 참조하거나src/makefile.global
forpthread_cflags
andpthread_libs
. 이 함수는의 쿼리를 허용합니다.libpq의 스레드-안전 상태 :
하나의 스레드 제한은 두 스레드가 동일하게 조작하려고 시도하지 않는다는 것입니다pgconn
동시에 물체. 특히 동일한 연결 객체를 통해 다른 스레드에서 동시 명령을 발행 할 수 없습니다. (동시 명령을 실행 해야하는 경우 여러 연결을 사용하십시오.)
pgresult
객체는 일반적으로 생성 후 읽기 전용이므로 스레드 사이에서 자유롭게 전달할 수 있습니다. 그러나, 당신이를 사용하는 경우pgresult
-에 설명 된 수정 함수PostgreSQL : 문서 : 10 : 33.11. 기타 토토 사이트또는PostgreSQL : 문서 : 10 : 33.13. 사설 토토 시스템, 동시에 동시 작업을 피하는 것은 귀하에게 달려 있습니다pgresult
,
더 이상 사용되지 않은 함수PQREQUESTCANCEL
andpqoidstatus
스레드-안전하지 않으며 멀티 스테이드 프로그램에서 사용해서는 안됩니다.PQREQUESTCANCEL
로 대체 할 수 있습니다pqcancel
. pqoidstatus
로 대체 할 수 있습니다pqoidvalue
.
응용 프로그램 내부에서 Kerberos를 사용하는 경우 (내부libpq), Kerberos 기능이 스레드 안전하지 않기 때문에 Kerberos 통화를 잠그는 것이 필요합니다. 기능 참조PQREGISTESTHREADLOCK
inlibpq소스 코드 사이에 협동 잠금 방법을위한 소스 코드libpq및 귀하의 응용 프로그램.