On Fri, 2006-06-23 at 13:35 -0400, Aaron Richton wrote: > libldap_r is the version of libldap compiled with the reentrant #defines > (LDAP_R_COMPILE or something like that? I forget.) As far as I know, the > API is identical, although there's a chance a couple *_thread_* might be > exposed. I believe the define makes libldap use things like > gethostbyname_r and other things that you'd want in a multithreaded > application.
As far as I know, libldap is thread safe in the sense that multiple threads can use separate LDAP* handles without running into concurrency issues; except for library initialization, all accesses to common data (i.e. global variables) is read-only. libldap_r is a (private, i.e. it doesn't get installed) version of libldap which is internally used by programs in the OpenLDAP suite that need to __share__ LDAP* handles between threads; as a consequence, concurrent activity related to LDAP* handles requires mutex protection and so. The API is identical; there is no provision for using libldap_r outside of the project build tree. To do that, one needs to arrange for libldap_r installation. In general, clients do not need libldap_r unless a single LDAP* handle needs be shared among threads. Well-behaved clients shouldn't need that, while a server (e.g. a proxy) could (see slapd's back-ldap as an example). p. Ing. Pierangelo Masarati Responsabile Open Solution OpenLDAP Core Team SysNet s.n.c. Via Dossi, 8 - 27100 Pavia - ITALIA http://www.sys-net.it ------------------------------------------ Office: +39.02.23998309 Mobile: +39.333.4963172 Email: [EMAIL PROTECTED] ------------------------------------------
