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>