From: | "Ross J(dot) Reedstrom" <reedstrm(at)rice(dot)edu> |
---|---|
To: | Myron Scott <mscott(at)sacadia(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: Using Threads? |
Date: | 2000-12-04 17:33:07 |
Message-ID: | 20001204113307.B5871@rice.edu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Myron -
Putting aside the fork/threads discussion for a moment (the reasons,
both historical and other, such as inter-backend protection, are well
covered in the archives), the work you did sounds like an interesting
experiment in code redesign. Would you be willing to release the hacked
code somewhere for others to learn from? Hacking flex to generate
thread-safe code is of itself interesting, and the question about PG and
threads comes up so often, that an example of why it's not a simple task
would be useful.
Ross
On Mon, Dec 04, 2000 at 12:20:20AM -0800, Myron Scott wrote:
> I maybe wrong but I think that PGSQL is not threaded mostly due to
> historical reasons. It looks to me like the source has developed over
> time where much of the source is not reentrant with many global variables
> throughout. In addition, the parser is generated by flex which
> can be made to generate reentrant code but is still not thread safe b/c
> global variables are used.
>
> That being said, I experimented with the 7.0.2 source and came up with a
> multithreaded backend for PGSQL which uses Solaris Threads. It seems to
> work, but I drifted very far from the original source. I
> had to hack flex to generate threadsafe code as well. I use it as a
> linked library with my own fe<->be protocol. This ended up being much much
> more than I bargained for and looking back would probably not have tried
> had I known any better.
>
>
> Myron Scott
>
From | Date | Subject | |
---|---|---|---|
Next Message | Mikheev, Vadim | 2000-12-04 17:51:33 | RE: Wrong FOR UPDATE lock type |
Previous Message | Peter Eisentraut | 2000-12-04 17:31:17 | Re: compiling pg 7.0.3 on sco 5.0.5 |