| 2981 | #else |
| 2982 | virtual void do_run()=0; |
| 2983 | void run() |
| 2984 | #endif |
| 2985 | { |
| 2986 | { |
| 2987 | boost::lock_guard<boost::mutex> lk(this->mutex); |
| 2988 | if(started) |
| 2989 | { |
| 2990 | boost::throw_exception(task_already_started()); |
| 2991 | } |
| 2992 | started=true; |
| 2993 | } |
| 2994 | #if defined BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK && defined(BOOST_THREAD_PROVIDES_VARIADIC_THREAD) |
| 2995 | do_run(boost::move(args)...); |
| 2996 | #else |
| 2997 | do_run(); |
| 2998 | #endif |
| 2999 | } |
| 3000 | |
| 3001 | #if defined BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK && defined(BOOST_THREAD_PROVIDES_VARIADIC_THREAD) |
| 3002 | virtual void do_apply(BOOST_THREAD_RV_REF(ArgTypes) ... args)=0; |