Re: Using different semaphore for locking

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: flyusa2010 fly <flyusa2010(at)gmail(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Using different semaphore for locking
Date: 2010-12-05 17:07:15
Message-ID: 26438.1291568835@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

flyusa2010 fly <flyusa2010(at)gmail(dot)com> writes:
> I found that postgres uses different semaphore system call on some different
> operating systems.
> For example, I found that on linux, System V semaphore (semop etc.) is used
> to implement locking, while on Darwin, POSIX semaphore (sem_wait, sem_post
> etc.) is used.
> linux and Darwin support both System V and POSIX semaphores, i'm wondering
> why postgres implement locking using different types of semaphore system
> call. Is there any performance or semantic issue on different OSes?

I think your question is answered in src/template/darwin:

# Select appropriate semaphore support. Darwin 6.0 (Mac OS X 10.2) and up
# support System V semaphores; before that we have to use POSIX semaphores,
# which are less good for our purposes because they eat a file descriptor
# per backend per max_connection slot.
case $host_os in
darwin[015].*)
USE_NAMED_POSIX_SEMAPHORES=1
;;
*)
USE_SYSV_SEMAPHORES=1
;;
esac

regards, tom lane

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2010-12-05 17:10:57 Re: FK's to refer to rows in inheritance child
Previous Message Kevin Grittner 2010-12-05 15:11:35 serializable read only deferrable