Buongiorno,
qualcuno sa darmi un'indicazione sul perché possa avvenire un segmentation fault al momento in cui viene passato un mutex a uno scoped_lock? La classe è una semplice coda, il cui codice è:
template<typename T>
class Queue
{
private:
std::queue<T> the_queue;
mutable boost::mutex the_mutex;
public:
Queue() {}
void push(const T& data)
{
boost::mutex::scoped_lock lock(the_mutex);
the_queue.push(data);
}
bool empty() const
{
boost::mutex::scoped_lock lock(the_mutex);
return the_queue.empty();
}
T& front()
{
boost::mutex::scoped_lock lock(the_mutex);
return the_queue.front();
}
T const& front() const
{
boost::mutex::scoped_lock lock(the_mutex);
return the_queue.front();
}
void pop()
{
boost::mutex::scoped_lock lock(the_mutex);
the_queue.pop();
}
};
Quando chiamo la funzione push avviene un segmentation fault, anche se la chiamo commentando l'istruzione the_queue.push(data); (lo sforamento di memoria avviene dunque nel costruttore della scoped_lock).
Grazie