[armedbear-devel] [Updated4] Patch for ABCL against BORDEAUX-THREADS HEAD
Mark Evenson
evenson at panix.com
Fri Mar 18 14:46:49 UTC 2011
On 3/18/11 2:38 PM, Blake McBride wrote:
> That is a particularly scary statement. Narrowing the window really
> means you are less likely to discover the bug in testing and more
> likely (because of Murphey's law and longer use) to discover it in
> production use. Can this be fixed without the reliance on luck?
>
> On Fri, Mar 18, 2011 at 3:12 AM, Mark Evenson<evenson at panix.com> wrote:
>> On 3/2/11 8:50 PM, Martin Simmons wrote:
>>
>>> 3) If condition-notify is called by one thread when a waiting thread
>>> is just about to enter the threads:synchronized-on form (but before
>>> it gets synchronized), then the notify will be lost. This happens
>>> because the underlying threading primitives have no "memory" of
>>> calls to notify when nothing it waiting (which is also the expected
>>> semantics for POSIX condition variables BTW).
>>
>> THREADS:SYNCHRONIZED-ON is now the first form executed by
>> BT:CONDITION-WAIT so the window here is considerably narrowed.
The current implementation is about as bare as one can get:
(defun condition-wait (condition lock)
(threads:synchronized-on condition
(release-lock lock)
(threads:object-wait condition))
(acquire-lock lock))
I think all implementations of CONDITION-WAIT would have such a window
as the environment gets setup to make the control transfer.
Maybe one could turn the CONDITION-WAIT into a macro?
--
"A screaming comes across the sky. It has happened before, but there
is nothing to compare to it now."
More information about the armedbear-devel
mailing list