| 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: | Whole Thread | Raw Message | 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 |