Re: Detailed documentation for external calls (threading, shared resources etc) - Mailing list pgsql-hackers

From Greg Stark
Subject Re: Detailed documentation for external calls (threading, shared resources etc)
Date
Msg-id BANLkTimhB9D7LbxvHqokwzwDkQGmkb2quQ@mail.gmail.com
Whole thread Raw
In response to Re: Detailed documentation for external calls (threading, shared resources etc)  (Florian Pflug <fgp@phlo.org>)
List pgsql-hackers
<p>Well process or thread, the issues are the same. <p>Check out the existing modules and how they use spinlocks and
lwlocksto protect shared memory data structures.<p>One thing to beware of is that there's no shared memory manager so
allshared data structures need to be fixed size allocated on startup. Anything where that isn't good enough usually
endsup as an on disk data structure.<div class="gmail_quote">On Jun 12, 2011 8:37 PM, "Florian Pflug" <<a
href="mailto:fgp@phlo.org">fgp@phlo.org</a>>wrote:<br type="attribution" />> On Jun12, 2011, at 19:26 , Seref
Arikanwrote:<br />>> This is actually a request for documentation guidance. I intend to<br /> >> develop an
extensionto postgresql. Basically I'd like to place calls<br />>> to network using ZeroMQ, and I need to have
detailedinformation about<br />>> a lot of things, especially threading issues. I need to have some<br />
>>global resources which will be presumably used by multiple threads.<br />>> I can see that there is a lot
ofdocumentation, but I'd really<br />>> appreciate pointers towards the books, or key documents that'd help me<br
/>>> move forward faster (docs/books about inner workings of key<br />>> functionality) I'll be using C
(mostlikely the best option) to<br />>> develop code, so which books/documents would you recommend?<br /> >
<br/>> <br />> There are no threading issues in postgres, because postgres doesn't<br />> use threads. Each
clientconnection is serviced by one backend process,<br />> launched by the postmaster when a new client connects.
Communication<br/> > between backend processes takes places via a shared memory segment<br />> and at times also
viasignals.<br />> <br />> The documentation contains extensive information about how to interface<br />>
3rd-partycode with postgres. To see how to interface C functions with<br /> > the SQL layer, read <a
href="http://www.postgresql.org/docs/9.0/interactive/xfunc-c.html">http://www.postgresql.org/docs/9.0/interactive/xfunc-c.html</a>.<br
/>>If you need to also access the database from your C-language functions,<br /> > also read <a
href="http://www.postgresql.org/docs/9.0/interactive/spi.html">http://www.postgresql.org/docs/9.0/interactive/spi.html</a>.<br
/>><br />> More exhaustive documentation is spread around the source tree in<br /> > the form of README files.
Isuggest you read the ones concerned with<br />> the postgres subsystems you're dealing with. At the very least,
you<br/>> should read .//src/backend/utils/mmgr/README which explains how<br /> > postgres manages memory.<br
/>><br />> The various contrib modules, found in contrib/ in the source tree,<br />> are also a good
reference.<br/>> <br />> best regards,<br />> Florian Pflug<br />> <br />> <br /> > <br />> -- <br
/>>Sent via pgsql-hackers mailing list (<a
href="mailto:pgsql-hackers@postgresql.org">pgsql-hackers@postgresql.org</a>)<br/>> To make changes to your
subscription:<br/>> <a
href="http://www.postgresql.org/mailpref/pgsql-hackers">http://www.postgresql.org/mailpref/pgsql-hackers</a><br/></div> 

pgsql-hackers by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Re: Small SSI issues
Next
From: Greg Smith
Date:
Subject: Formatting curmudgeon HOWTO