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

Re: Committing Resources to Win32

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: pgsql-hackers-win32 <pgsql-hackers-win32(at)postgresql(dot)org>
Subject: Re: Committing Resources to Win32
Date: 2003-11-07 15:01:38
Message-ID: 3FABB3D2.6080806@dunslane.net (view raw or flat)
Thread:
Lists: pgsql-hackers-win32
Marsh Ray wrote:

> Claudio Natoli wrote:
>
>>> Specifically, I believe and through conversations with several Win32   
>>
>> programmers I know, that using create process is a bad idea and that we
>> should move to a threaded model (at least for Win32).
>>
>> CreateProcess appears to be the method the core developers have decided
>> upon. Unfortunately, and speaking from experience, unless either the
>> decision to use MingW as a build environment is reviewed (as opposed to
>> VC++, for instance), or MingW "soon" supports thread local storage
>> declspecs, a threaded implementation would be just too difficult to
>> integrate cleanly with the existing source base.
>>
> I'm trying to understand this. Is it that the existing code references
> static data in so many places that it impractical to move all that into
> a structures?
>
> You could put a structure high up on the stack of each thread and pass
> down a pointer to it, or use a hash on thread id to reference the data.
> Structuring those globals would probably flush out some, er,
> "undocumented enhancements".
>
> It looks like the Apache group put a lot of work into modularizing their
> execution model for their 2.0.x. It has certainly made their app a
> serious choice under Windows.


I don't think it makes sense to have threading on only one platform from 
a common code base. Perhaps a parallel effort needs to be to develop a 
threaded version for Unix and see how portable and stable it is, and 
then see how we can get that onto Windows.

The TODO list at http://developer.postgresql.org/todo.php has these 
items which all seem potentially relevant:

# Experiment with multi-threaded backend [thread 
<http://momjian.postgresql.org/cgi-bin/pgtodo?thread>]
# Add connection pooling [pool 
<http://momjian.postgresql.org/cgi-bin/pgtodo?pool>]
# Allow persistent backends [persistent 
<http://momjian.postgresql.org/cgi-bin/pgtodo?persistent>]

If we are threaded do we still need to use SYSV shared memory?

Threading has all sorts of other wrinkles, too (see recent discussion of 
SIGPIPE handling in threaded libpq apps for example).

This URL seems to indicate what is happening with TLS in gcc for w32: 
http://gcc.gnu.org/ml/gcc/2003-10/msg00580.html

ISTM that the best plan is to get it working for now with CreateProcess 
if possible. If the performance sucks really badly or it is unstable 
then we would have to reassess.

cheers

andrew






In response to

pgsql-hackers-win32 by date

Next:From: Merlin MoncureDate: 2003-11-07 15:26:24
Subject: Re: Committing Resources to Win32
Previous:From: Marsh RayDate: 2003-11-07 11:45:49
Subject: Re: Committing Resources to Win32

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