Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2002-08-06 09:36:43

From: "Pete Becker" <petebecker_at_[hidden]>
> At 08:48 AM 8/6/2002 -0400, Moore, Dave wrote:
> >I think the idea of parameterizing the return value has merit on the
> >"syntactic sugar" side of things, as the user doesn't have to create
> >own boost::function just so they can extract a return value - they can
> >pass simple function pointers.
> Function pointers are a C solution, not a C++ solution.

Well, function objects are a C++ solution.

> Rather than beefing
> up the C solution, I suggest a more object-oriented solution: a class with
> a member function that runs in a separate thread. These have been around
> for years, dating from long before the days of Java:
> class thread
> {
> public:
> thread();
> ~thread();
> void start();
> private:
> virtual void run() = 0;
> };
> Derived classes can hold whatever data they need. When the thread
> the object's data can be examined to get the result.

The important difference I see is that ~thread() needs to perform an
implicit join, since run() needs to access 'this'.

The current approach makes a copy of the function object, and ~thread
doesn't need to join().

Apart from that:

void join_and_delete(boost::thread * pt)
    delete pt;

class oo_thread: noncopyable

    shared_ptr<boost::thread> pt;


    void start()
        pt.reset(new boost::thread(bind(&oo_thread::run, this)),


    virtual void run() = 0;

Boost list run by bdawes at, gregod at, cpdaniel at, john at