我想對我的隊列設置限制。您可以在下面找到Queue類的實現。在隊列中設置限制
所以,總之,我想在隊列中寫入一個線程,直到達到極限,然後等待可用空間。第二個線程讀取隊列並使用它接收的數據執行一些操作。
int main()
{
//loop that adds new elements to the Queue.
thread one(buildQueue, input, Queue);
loop{
obj = Queue.pop()
func(obj) //do some math
}
}
所以問題是,隊列建立,直到結束,但我想只設置10個元素,例如。程序應該像這樣工作:
- 檢查隊列中的可用空間是否可用。
- 如果沒有空間 - 等待。
- 寫入隊列直到限制。
類隊列
template <typename T> class Queue{
private:
const unsigned int MAX = 5;
std::deque<T> newQueue;
std::mutex d_mutex;
std::condition_variable d_condition;
public:
void push(T const& value)
{
{
std::unique_lock<std::mutex> lock(this->d_mutex);
newQueue.push_front(value);
}
this->d_condition.notify_one();
}
T pop()
{
std::unique_lock<std::mutex> lock(this->d_mutex);
this->d_condition.wait(lock, [=]{ return !this->newQueue.empty(); });
T rc(std::move(this->newQueue.back()));
this->newQueue.pop_back();
return rc;
}
unsigned int size()
{
return newQueue.size();
}
unsigned int maxQueueSize()
{
return this->MAX;
}
};
我很新的線程程序,這樣我可以誤解的概念。這就是爲什麼不同的提示高度讚賞。
這與「爲我寫代碼」有什麼不同?實際問題在哪裏? – Griwes
我投票結束這個問題,因爲SO用戶不是你的機器人:) –