Re: Semaphores - feature request
| From: | Michael B Allen | 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/