Am new to C++ 11 and using threading. I came across a scenario where it's not possible to copy mutex & condition variable objects. The code is like this....
class producer {
public:
producer(mutex m, condition_variable cv)
{
mut = m; // ERROR
cvar = cv; // ERROR
}
private:
mutex mut;
condition_variable cvar;
}
When trying to copy the variables in constructor it's giving the error. Seems like copy constructor is set to delete for mutex and cv.
Is there a way to overcome that? I want a producer & consumer class and then pass the mutex & cv from the main function.
so basically the call from main function should look like....
int main ()
{
mutex m;
condition_variable cv;
//Initialize mutex & cv
producer prod(m, cv);
}
No this is not possible. Features were added in C++ to enable this feature (non copying).
If you think about the implementation are you changing somekind of kernel object? Will that be the same. Probably not. This is by design.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With