Boost logo

Boost Users :

From: Stephen Torri (storri_at_[hidden])
Date: 2008-08-15 16:12:48


I would like to have a function object that I can use the return value
of its operator() function. Here is what I think best explains my
request

class Apple {
public:

        int operator()( int x )
        {
                int value = x * 2;
                return value;
        }
}

void main (int, char**)
{
        int thread_count = 2; // 2-Core cpu

        // Create a pool of Apple threads
        typedef boost::shared_ptr<boost::thread> Thread_Ptr_t;
        typedef std::list < Thread_Ptr_t > Thread_Pool_t;
        Thread_Pool_t m_thread_pool;

        // Create threads
        for ( int index = 0;
              index < thread_count;
              ++index )
        {
                Thread_Ptr_t new_thread_ptr ( new boost::thread ( boost::bind ( &Apple, _1, )( index ) ) );
                m_thread_pool.push_back ( new_thread_ptr );
        }

        // Wait for all threads to finish
        for ( Thread_Pool_t::iterator pos = m_thread_pool.begin();
              pos != m_thread_pool.end();
              ++pos )
        {
                (*pos)->join();
        }
        
}

Where is the point I should be catching return from the operator()
function? I want the thread to do work and then have the opportunity to
get some results from it. Is there a code example someone can show me?

Stephen


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net