On Wednesday, February 05, 2003 4:05 PM [GMT+1=CET],
William E. Kempf <[EMAIL PROTECTED]> wrote:

> > On Wednesday, February 05, 2003 3:04 PM [GMT+1=CET],
> > William E. Kempf <[EMAIL PROTECTED]> wrote:
> >
> > > > What I would  like to see is a new boost::thread  implementation
> > > which meets the following requirements.
> > > >
> > > > a. There shall be two interfaces to a thread. One for creation of a
> > > >    thread, from here on called  boost::thread. And, one for the
> > > > created  thread, from here on called boost::thread::self.
> > >
> > > Self?  Why?  If it's on operation that can *only* be made on the
> > > current thread, then a static method is a better approach.  Otherwise,
> > > I could make a "self" instance and pass it to another thread, which
> > > could then attempt an operation that's not valid for calling on
> > > another thread.
> >
> > It would seem to me that, given the availability of p->yield() as a
> > syntax for invoking a static function, it'd be better to use a
> > namespace-scope function to avoid errors and for clarity.
>
> OK, I can buy that over a seperate self class.  This was discussed at one
> point, but the particular issue with p->yield() was never brought up.  I'm
> not sure I find it compelling, because which thread yields should be
> evident from the documentation, and I don't see anyone ever using this
> syntax.  But compelling or not, I'm not opposed to making this a free
> function if others think it's clearer in this regard.

Here's the extent of my argument:

1. It's easy to miss "static" in a member function declaration
2. Various things lead people to write this->foo() even for static functions
3. Other people reading that code may tend to write that->foo()

Anyway, I'm not heavily committed to this argument, but I've grown away from
using static member functions in this way, and tend toward free functions
for clarity.  Now I tend to just use static members as a way of carrying a
function along with a type in a metaprogramming context -- the type gets
passed to a template and the function can then be used -- much like using
function pointers as template parameters.

-- 
Dave Abrahams
Boost Consulting
http://www.boost-consulting.com

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to