At 14:57 Uhr -0400 16.10.2006, Lang Martin wrote:
- it's still a bit incomplete. There's no parallel limit -- I'm going to capture out of memory exceptions instead. I don't like the idea of a limit -- I want to go until I run out of juice.
(Note that the "limit" is not actually limiting any calculation (assuming that futures do terminate); it's just making other futures wait until earlier ones are done. You'll want this when starting external tools, otherwise you'll make your machine's responsitivity suffer.)
- Some of the names are bit fanciful and/or incorrect -- it's a weakness of mine. "Incorrect" is a result of being a new scheme programmer, and new to formal computing terms in general; "fanciful" is exhibited by the name "kermit", because it's reporter, you see, and I was wearing a sesame street t-shirt at coding time.
I'd rename reporter-total! -> reporter-total-set!
The name |fn!| in (define (make-reporting-thread fn! . timeout) ..) looks funny: fn is normally used for "function", and (pure) functions don't have side effects. |proc| might be a better name. But actually I'm not sure what it does. (Well I see that it's return value isn't used at all.)
I have tested this, and it's performance was entirely satisfactory.
the reporting thread exits when it's received as many messages as the count stored in it's specific field. the main loop joins the reporting thread with a timeout, which is my el-cheapo method for dropping pending operations on the floor, since they will errors after some point in time for my purposes.
Criticism welcome.
What does make-lazy do? It can't just be an alternative implementation of a make-promise, since those would take a thunk, not an 1-ary function.
All in all I don't get what it does.
Christian.