
I saw that presentation too, it is very impressive and I can't wait to see what comes of it. I would love to see something like this go into boost but somehow I don't think it could be done elegantly without language and compiler support. Definitely wouldn't complain if someone proved me wrong :) On 10/30/05, Jason Hise <chaos@ezequal.com> wrote:
I watched the talk Herb Sutter gave recently regarding concurrency, and I have to say I find the ideas of active objects and future variables to be very exciting. (A link to the talk is provided below, which must be viewed with Internet Explorer). I noticed that Boost already has a futures library in the sandbox under development, which from what I can tell looks well designed. Are there any plans to add the functionality of active objects to boost as well? I would be interested in hearing how you think the problem would be best approached.
From what I can tell, it should ideally be possible to use 'active' as a modifier like 'const' or 'volatile' in front of a specific object instance, and have all member function calls automatically add themselves to a queue when called, instead of actually being called. Because this syntax is probably impossible to pull off, I think the next best thing would look something like the following:
struct MyClass { int foo ( int arg1, const char * arg2 ); };
void test ( ) { active < MyClass > object; future < int > i = object.request ( MyClass::foo, 42, "blah" ); }
'request' could also be spelled 'enqueue', 'invoke', or 'operator ()', although I'm not sure if the terseness of the latter would be sensible. 'active' would probably use CRTP to derive privately from 'MyClass', enforcing that member functions of MyClass are not called directly. Thoughts?
Herb Sutter's video: http://microsoft.sitestream.com/PDC05/TLN/TLN309_files/Default.htm#nopreload=1&autostart=1
-Jason
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Cory Nelson http://www.int64.org