Re: Semaphores - feature request

From: Date: Wed, 03 Jan 2007 06:37:18 +0000
Subject: Re: Semaphores - feature request
References: 1 2 3 4 5 6 7  Groups: php.internals 
Request: Send a blank email to internals+get-27246@lists.php.net to get a copy of this message
On Wed, 3 Jan 2007 06:51:57 +0100 "Wojciech Malota" <wojtekm86@konto.pl> wrote: > > How would your code decide when to actually go ahead and remove the > > semaphore? > > > > Are you suggesting that the semaphore simply be removed whenever it > > is determined to be "unlocked"? Meaning you want to call semget() and > > semctl(IPC_RMID) for every single lock/unlock? > > I've wrote about it in my first letter. > There are two functions: my_sem_acquire and my_sem_release. Well I read your original post again. Clearly I've been off track. So the problem is that one process may call semop AFTER another process calls semctl(IPC_RMID) to remove the semaphore from the system? If that's the case then it is still impossible to know if it's ok to remove a semaphore. Only the application would know when all paticipants will no longer need the semaphore and that it can be safely removed. I'm not familiar with the PHP semaphore API but I know a lot about the SysV semphore C api and there's no "FIFO" that could be used to somehow indicate that it's safe to remove a semaphore. You must use some additional application specific logic to trigger semaphore removal. For example you could have a "boss" process that collects the exit status of each "worker". When the boss process has an exit status for all workers the semaphore can be removed. Am I getting closer or am I still not understanding the problem? Mike -- Michael B Allen PHP Active Directory SSO http://www.ioplex.com/

« previous php.internals (#27246) next »