Tobias Rittweiler writes:
The attached patch adds Gates to ABCL, inspired by what Franz Allegro Common Lisp provides.
A GATE is an object with two states, open and closed. It is created with MAKE-GATE. Its state can be opened (OPEN-GATE) or closed (CLOSE-GATE) and can be explicitly tested with GATE-OPEN-P. Usually though, a thread awaits the opening of a gate by WAIT-OPEN-GATE.
This will be used to implement the threading communication style in ABCL's Swank backend.
I'm not particularly good at writing multiprocessing, or Java code. So please review carefully.
Tobias wrote this to support his version of a multi-threaded SLIME backend, and has proposed it for inclusion in ABCL.
When I get some time, I'll do some tests, but post the patch here in case it helps someone else out before that time or if their is any feedback.
As it stands, the Gates implementation would go in the EXTENSIONS package.
Mark