On Tue, 11 Aug 2009 00:26:39 +0200, Stelian Ionescu said:
On Sat, 2009-08-01 at 18:46 -0500, Matt Lamari wrote:
I'm still around if anyone needs support on the functions I've added.
I've cleaned up the code a little(attached as patch against the darcs repository), however, before merging I need you to split condition-wait in at least 3-4 separate functions because it's way too big(two screenfuls here). When you're done, please send a unified diff done against the darcs repository.
I have some comments on the patch:
It would be better to implement thread-alive-p by calling mp:process-alive-p.
The relocking of the caller's lock in condition-wait should be inside the unwind-protect cleanup, otherwise you can throw without the lock held.
Claiming a lock and doing hash table manipulation inside a mp:process-wait predicate ("Waiting for notification") is not good practice because the predicate is suppose to be a pure function. It should be safe to check the value of wakeup-allowed-to-proceed without the lock and manipulate the hash table after mp:process-wait has returned.
Is the prog1 in condition-wait redundant?