Я использую очередь с моделью производителя-потребителя в своей программе. У меня есть один поток, который хранит данные очереди в очереди, а один поток сохраняет данные очереди из очереди. Мой вопрос: нужен ли мне блокировка мьютекса для этого сценария при выполнении операции очереди или деактивации? Это необходимо? Я вижу необходимость в мьютексе, если у меня более одного потока на стороне производителя или потребителя, но я не уверен, что это необходимо для моего дела.C++ queue with 2 threads
Мой код выглядит следующим образом:
template <class T>
class myqueue {
private:
queue<T> localqueue;
boost::mutex insert;
public:
myqueue(){}
~myqueue(){}
void enqueue(T in_value) {
boost::mutex::scoped_lock insert_lock = boost::mutex::scoped_lock(
this->insert);
localqueue.push(in_value);
insert_lock.unlock();
}
Примечания не только enqueuing и извлечение из должно быть заблокировано - Там более сложные проблемы, помимо тех, которые, как недействительные итераторы и размером *) * проблемы (. Я не уверен, что очередь STL является лучшей отправной точкой для реализации потоков связи. – tofro