ABCL's multithreading symbols have moved to THREADS package (this was deprecated with abcl-0.18 and removed with abcl-0.22).
Implement CONDITION-WAIT and CONDITION-NOTIFY for ABCL.
Use 10ms pause for ABCL's THREAD-YIELD.
On Fri, 03 Dec 2010 14:37:52 +0100, Mark Evenson said:
Implement CONDITION-WAIT and CONDITION-NOTIFY for ABCL.
That version of CONDITION-WAIT won't work properly:
- More than one thread can wake up from a single call to CONDITION-NOTIFY.
- If CONDITION-WAIT is called while another thread is inside THREAD-YIELD, then any pending "active" state will be lost (i.e. CONDITION-NOTIFY will fail to wake a thread).
Also, what is te purpose of the CONDITION-VARIABLE-LOCK (which is only used by CONDITION-NOTIFY)?
__Martin
On 12/3/10 4:56 PM, Martin Simmons wrote:
On Fri, 03 Dec 2010 14:37:52 +0100, Mark Evenson said:
Implement CONDITION-WAIT and CONDITION-NOTIFY for ABCL.
That version of CONDITION-WAIT won't work properly:
Indeed it won't: thanks for the comments, and the kick in the butt.
After studying the needed abstractions in more detail I've [reimplemented most of the BORDEAUX-THREADS interfaces for ABCL based on the java.util.concurrent.ReentrantLock][1]. This code should now correctly implement the POSIX-style condition variables, the recursively held locks, and the form of lock acquisition that returns immediately.
Please consider the referenced patch for inclusion in BORDEAUX-THREADS.
[1]: http://slack.net/~evenson/abcl/hunchentoot/bordeaux-threads-abcl-20101204a.d...
bordeaux-threads-devel@common-lisp.net