the thread-safety status of the library.
-
+
system's documentation for information about how to build
thread-enabled applications, or look in
src/Makefile.global for PTHREAD_CFLAGS>
-and PTHREAD_LIBS>.
+and PTHREAD_LIBS>. This function allows the querying of
+
libpq's thread-safe status:
+
+
+
PQisthreadsafePQisthreadsafe>>
+
+ Returns the thread safety status of the
libpq
+ library.
+
+int PQisthreadsafe();
+
+
+
+ Returns 1 if the
libpq is thead-safe and
+ 0 if it is not.
+
+
+
+
+
-One restriction is that no two threads attempt to manipulate the same
+One thread restriction is that no two threads attempt to manipulate the same
PGconn> object at the same time. In particular, you cannot
issue concurrent commands from different threads through the same
connection object. (If you need to run concurrent commands, use
-# $PostgreSQL: pgsql/src/interfaces/libpq/exports.txt,v 1.8 2006/05/21 20:19:23 tgl Exp $
+# $PostgreSQL: pgsql/src/interfaces/libpq/exports.txt,v 1.9 2006/05/23 22:13:19 momjian Exp $
# Functions to be exported by libpq DLLs
PQconnectdb 1
PQsetdbLogin 2
PQescapeStringConn 126
PQescapeByteaConn 127
PQencryptPassword 128
+PQisthreadsafe 129
+
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/interfaces/libpq/fe-exec.c,v 1.183 2006/05/21 20:19:23 tgl Exp $
+ * $PostgreSQL: pgsql/src/interfaces/libpq/fe-exec.c,v 1.184 2006/05/23 22:13:19 momjian Exp $
*
*-------------------------------------------------------------------------
*/
return pqIsnonblocking(conn);
}
+/* libpq is thread-safe? */
+int
+PQisthreadsafe(void)
+{
+#ifdef ENABLE_THREAD_SAFETY
+ return true;
+#else
+ return false;
+#endif
+}
+
+
/* try to force data out, really only useful for non-blocking users */
int
PQflush(PGconn *conn)
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.128 2006/05/21 20:19:23 tgl Exp $
+ * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.129 2006/05/23 22:13:19 momjian Exp $
*
*-------------------------------------------------------------------------
*/
/* Set blocking/nonblocking connection to the backend */
extern int PQsetnonblocking(PGconn *conn, int arg);
extern int PQisnonblocking(const PGconn *conn);
+extern int PQisthreadsafe(void);
/* Force the write buffer to be written (or at least try) */
extern int PQflush(PGconn *conn);