Boost logo

Boost Users :

From: Howard Hinnant (hinnant_at_[hidden])
Date: 2004-03-10 19:49:59


On Mar 10, 2004, at 6:27 PM, GoochRules! wrote:
> I'm wondering why there is no option to pass a parameter to a thread
> function with boost's threads. With pthreads and Windows CreateThread
> I'm used to casting an object to a void*, and retrieving the object
> within the thread function. The only thing similar with boost::thread
> seems to be to create a struct with an operator()() and a constructor
> that takes a void*. operator()() then calls an external function with
> the passed void*.
>
> Just curious about this design decision.

I would guess because it is so easy (at least with the right tools!) to
create function objects that adapt a function from one that takes
parameters to one that doesn't.

void foo(int, double);
void bar(A*);

struct A{};

int main()
{
     thread t1(bind(foo, 1, 2.5));
     thread t2(bind(bar, new A));
}

-Howard


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