From: | Manfred Spraul <manfred(at)colorfullife(dot)com> |
---|---|
To: | Andreas Pflug <pgadmin(at)pse-consulting(dot)de> |
Cc: | Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>, PostgreSQL Patches <pgsql-patches(at)postgresql(dot)org> |
Subject: | Re: Compiling libpq with VisualC |
Date: | 2004-06-11 21:27:52 |
Message-ID: | 40CA23D8.4040402@colorfullife.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers pgsql-hackers-win32 pgsql-patches |
Andreas Pflug wrote:
> Bruce Momjian wrote:
>
>>
>>
>> Agreed. My pthread book says pthread_mutex_init() should be called only
>> once, and we have to guarantee that. If the Windows implentation allows
>> it to be called multiple times, just create a function to be called only
>> by Win32 that does that and leave the Unix safe.
>>
>>
>>
> Ok, so here's the win32 workaround with the unix stuff left untouched.
> There's no memory interlocking api in win32 that wouldn't need some
> initializing api call itself, so we'd have to go for assembly level
> test-and-set code.
Wrong. There are portable test-and-set functions in the Win32 SDK: for
example InterlockedCompareExchange. They operate on ints and do not need
initialization.
> or introduce a mandatory global libpq initializing api.
There is a third option: Add one C++ file and use the constructor to
initialize the mutex. VisualC is always a C++ compiler, thus C++ support
shouldn't be an issue. I've attached an example app.
> Considering the probably quite low usage of kerberos/ssl together with
> threads under win32, and the very low probability of two
> threads/processors (!) trying to initiate a connection at the same
> time, it doesn't seem to be worth the compiler hassle with assembly
> inline.
>
This argument is insane: Given enough installations, even a very low
probability will cause failures.
But this is a minor point, I think the patch should go in and I'll write
with a proposal to close the race, either based on
InterlockedCompareExchange or on a C++ file.
--
Manfred
Attachment | Content-Type | Size |
---|---|---|
main.cpp | text/x-c++src | 278 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Dann Corbit | 2004-06-11 21:29:28 | Re: [pgsql-hackers-win32] Tablespaces |
Previous Message | Dann Corbit | 2004-06-11 21:14:21 | TESTING (was: RE: More vacuum.c refactoring ) |
From | Date | Subject | |
---|---|---|---|
Next Message | Dann Corbit | 2004-06-11 21:29:28 | Re: [pgsql-hackers-win32] Tablespaces |
Previous Message | Dann Corbit | 2004-06-11 20:41:27 | Re: [pgsql-hackers-win32] Tablespaces |
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2004-06-11 21:39:01 | Re: Compiling libpq with VisualC |
Previous Message | Andrew Dunstan | 2004-06-11 20:02:11 | Re: [PATCHES] pg_ctl using START with paths needing quotes |