]> granicus.if.org Git - postgresql/commit
win32 doesn't support a static initializer for mutexes, thus the first
authorBruce Momjian <bruce@momjian.us>
Mon, 12 Jul 2004 14:11:17 +0000 (14:11 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 12 Jul 2004 14:11:17 +0000 (14:11 +0000)
commita41463e31c4e3c231a84c47088e76d39191c4f36
tree7844c4b346185ff74dcbe94d7b709e3d1da6018e
parentc14a43f657c33189582ca1a7a60ab419dc6164a5
win32 doesn't support a static initializer for mutexes, thus the first
user must initialize the lock. The problem are concurrent "first" users
- the pthread_mutex_t initialization must be synchronized.
The current implementation is broken, the attached patches fixes that:
mutex_initlock is a spinlock. If the pthread_mutex_t mutex is not
initialized, then the spinlock is acquired, if the pthread_mutex_t is
initialized if it's not yet initialized and then the spinlock is
dropped.

Manfred Spraul
src/interfaces/libpq/fe-connect.c
src/interfaces/libpq/fe-secure.c