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