Skip site navigation (1) Skip section navigation (2)

Re: [PATCHES] Compiling libpq with VisualC

From: pgsql(at)mohawksoft(dot)com
To: "Bruce Momjian" <pgman(at)candle(dot)pha(dot)pa(dot)us>
Cc: "Andreas Pflug" <pgadmin(at)pse-consulting(dot)de>,"PostgreSQL Win32 port list" <pgsql-hackers-win32(at)postgresql(dot)org>,"PostgreSQL-development" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [PATCHES] Compiling libpq with VisualC
Date: 2004-06-13 23:17:49
Message-ID: 17038.24.91.171.78.1087168669.squirrel@mail.mohawksoft.com (view raw or flat)
Thread:
Lists: pgsql-hackerspgsql-hackers-win32pgsql-patches
>
> [ Thread moved to hackers and win32.]
>
> 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 or introduce a mandatory global libpq initializing
>> api. 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.
>
> What is the recommended way to create mutex objects (CreateMutex) from
> Win32 libraries?  There must be a clean way like there is in pthreads.

A mutex is inherently a global object. CreateMutex(NULL, FALSE, NULL) will
return a handle to an unowned mutex.


>
> ---------------------------------------------------------------------------
>
> In the patch Win32, pthread_mutex_init() == CreateMutex():
>
> 	+#ifndef WIN32
> 	        static pthread_mutex_t singlethread_lock =
> PTHREAD_MUTEX_INITIALIZER;
> 	+#else
> 	+       static pthread_mutex_t singlethread_lock;
> 	+        static int mutex_initialized = 0;
> 	+        if (!mutex_initialized)
> 	+        {
> 	+                mutex_initialized = 1;
> 	+                pthread_mutex_init(&singlethread_lock, NULL);
> 	+        }
> 	+#endif
>
> --
>   Bruce Momjian                        |  http://candle.pha.pa.us
>   pgman(at)candle(dot)pha(dot)pa(dot)us               |  (610) 359-1001
>   +  If your life is a hard drive,     |  13 Roberts Road
>   +  Christ can be your backup.        |  Newtown Square, Pennsylvania
> 19073
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>     (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
>


In response to

Responses

pgsql-hackers by date

Next:From: Tom LaneDate: 2004-06-13 23:22:35
Subject: Re: Can get GiST RECHECK clause to work
Previous:From: pgsqlDate: 2004-06-13 23:08:20
Subject: Re: [pgsql-hackers-win32] Tablespaces

pgsql-patches by date

Next:From: Bruce MomjianDate: 2004-06-13 23:55:39
Subject: Re: [PATCHES] Configuration patch
Previous:From: pgsqlDate: 2004-06-13 23:02:15
Subject: Re: [PATCHES] Configuration patch

pgsql-hackers-win32 by date

Next:From: Bruce MomjianDate: 2004-06-13 23:44:58
Subject: Re: pg_ctl vs. Windows locking
Previous:From: pgsqlDate: 2004-06-13 23:08:20
Subject: Re: [pgsql-hackers-win32] Tablespaces

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group