Re: Win32 Thread safetyness

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: Win32 Thread safetyness
Дата
Msg-id 200508282155.j7SLtbW19458@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: Win32 Thread safetyness  ("Dave Page" <dpage@vale-housing.co.uk>)
Список pgsql-hackers
Dave Page wrote:
> > So, we might be able to get away without this on Win32, or perhaps the
> > pthread_self().p is a valid unique identifier for Win32 threads and
> > pthreads.
> 
> Right.
> 
> > How is this pthread_self() call working on Win32 now?  Is pthreads a
> > requirement for libpq threading on Win32?  I didn't think it was.
> 
> Libpq can use our existing minimal implementation of pthreads (this is
> how it currently works in CVS). The thread test program needs the full
> pthreads library.

Well, actually I tried to run configure --enable-thread-safety on a
MinGW platform and got:
configure: error: pthread.h not found, required for --enable-thread-safetyYou need to run the 'configure' program
first.See the file'INSTALL' for installation instructions.make: *** [all] Error 1
 

Can we not compile --enable-thread-safety without pthreads on Win32?  I
am thinking that is true because we are going to need pthreads for ecpg.

> > As far as ecpg is concerned, I think the right plan is to use Win32
> > threads for libpq, but to use pthreads in ecpg.  However, will Win32
> > threads still work in ecpg if we use pthreads to do the 
> > locking?  Maybe
> > we have to force ecpg users to use pthreads on Win32.
> 
> Currently I have it building using the full pthreads library, with 
> 
> static unsigned long
> pq_threadidcallback(void)
> {
> #ifdef WIN32
>      return (unsigned long) pthread_self().p;
> #else
>      return (unsigned long) pthread_self();
> #endif
> }
> 
> I don't know how badly that might be screwed up though - I simply don't
> know enough about pthreads (or win32 threads for that matter - I only
> really use wxWidgets threads or C# threads).

Seems Mangus gave us the proper Win32 function call and I have changed
pthread_self() on Win32 to return DWORD.

> The ideal way would be to port it to win32 threads of course, but
> there's no way I'll have time to do that at the moment with pgAdmin and
> pgInstaller both needing my attention :-(. Anyone else got some time?
> 
> > Also, there doesn't seem to be a good way for users to know 
> > if libpq or
> > ecpg was compiled to be thread-safe.
> 
> No. Mind you, that ties in nicely with a comment that Magnus made to me
> the other day - we could really use a function to get libpq's version
> number. Something similar (for 8.2 of course) could tell us more about
> it, such as thread safetyness.

True.

> Anyhoo, I can patch ecpglib to use the full pthreads with my hack above
> if people think that is the way to go for the time being.

OK.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Andreas Pflug
Дата:
Сообщение: dangling lock information?
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: Win32 Thread safetyness