Subject: Re: [boost] [threadpool] new version - with rescheduling ofcurrenttask
Date: 2009-02-28 06:36:51
Am Saturday 28 February 2009 10:43:10 schrieb vicente.botet:
> If I understand then we will have two function win the same name in
> different namespaces. Does ADL found the good one,i.e. if the user see
> boths overloadings, will wait_for_all(f1, f2) call the the future
> overloading and wait_for_all(t1, t2) calls the task overloading or do we
> need to prefix with the namespace?
I suggest to prefix it - but I could also rename the threadpool specific ones
> Well the question is, what happens if the condition don't retuns true? The
> task doing this will be blocked, but only this task. The worker thread will
> continue to schedule other tasks, of course testing each time this
> condition. It seems to me a good compromise.
This is already provided by the task wait functionality (wait(), get() etc.).
If task::get() or task::wait() would block because the associated future is
not ready the worker thread automatically reschedules, e.g. executes other
items from the pool channel.
I think a explicit reschedule_until() is not required and dangerous.
tp::task< int > t1(
boost::this_task::get_thread_pool< pool_type >().submit(
boost::ref( * this),
n - 1) ) );
t1.get(); // rescheduling if t1.get() would block == until t1.get() would nont
block other items from the pool channel are executed.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk