Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Sep 2010 10:06:39 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-threads@freebsd.org
Cc:        Alexander Churanov <alexanderchuranov@gmail.com>
Subject:   Re: What is the status of thread process-shared synchronization?
Message-ID:  <201009231006.40019.jhb@freebsd.org>
In-Reply-To: <AANLkTikXSKt0ysmLL7bU2H%2B9vqasmJktpfwwn5mOSSEH@mail.gmail.com>
References:  <AANLkTikXSKt0ysmLL7bU2H%2B9vqasmJktpfwwn5mOSSEH@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday, September 23, 2010 8:19:26 am Alexander Churanov wrote:
> Hi folks!
> 
> The FreeBSD 8.1 manual pages state that pthread process-shared
> synchronization option is not supported, at least for some primitives.
> 
> 1) Are there any plans to implement this option?
> 2) Is anybody working on that?
> 3) What are the main obstacles which prevent us from having the option
> implemented?
> 
> I am teaching students UNIX-like systems in general and FreeBSD in
> particular. I've set them a task on synchronizing processes reading
> and writing from a shared-memory cache. But then found that in spite
> of PTHREAD_PROCESS_SHARED being available, it is not supported. I've
> endeavored to fix POSIX rwlocks by making pthread_rwlock_t a
> structure, but then found that POSIX semaphores do not support
> process-shared attribute either.

I believe POSIX semaphores in 9 do now support PTHREAD_PROCESS_SHARED.  David 
Xu implemented it.  He may be able to MFC this to 8-stable.

> 4) Do we have any synchronization primitive capable of synchronizing
> threads in different processes in FreeBSD?

Unfortunately the various POSIX/SYSV primitives do not currently support it in 
8.  You could implement a shared mutex on top of umtx fairly easily I believe.  
umtx itself is address-space agnostic (so a umtx object can be shared among 
processes), and the existing pthread_mutex code can probably be borrowed 
directly to implement a mutex.  I think the biggest obstacle for FreeBSD is 
changing the definition of pthread_mutex_t, etc. to be structures instead of 
pointers to dynamically allocated structures.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009231006.40019.jhb>