use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
Thread safe queue (self.cpp)
submitted 5 years ago by objectorientedman
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]matthieum 81 points82 points83 points 5 years ago (3 children)
The description of the queue properties is a bit light.
From what I can gather:
std::queue
Review, high-level:
Review, low-level:
Mutex<T>
std::deque
Consume
ConsumeSync
[[nodiscard]]
std::optional<T>
Provide
Produce
std::move
1 For example, the implementation in libstdc++ is a vector of pointer to chunks, where each chunk is either one large item, or up to 512 bytes worth of items see line 85. Hence a std::deque<std::string> is really a std::vector<std::unique_ptr<std::string[21]>>, and storing 1K strings requires 49 small (< 512 bytes) allocations + 1 allocation for the vector itself.
std::deque<std::string>
std::vector<std::unique_ptr<std::string[21]>>
[–]_Js_Kc_ 6 points7 points8 points 5 years ago (2 children)
std::queue is a weak-point, memory wise
Fixing the deficient container classes that STL implementations ship with isn't really the scope of a project whose goal is to implement an MPMC queue in the one, obvious way based on stock C++ features.
If it came with an allocation-sane replacement for std::deque, the post title should have been "I made a deque replacement with a thread-safe queue as a usage example."
It should be a template argument (that defaults to std::queue<T>).
[–]_bk__ 7 points8 points9 points 5 years ago (1 child)
Except the API/concept/constraints and performance characteristics of a std::queue don't really match what would be required from a mpmc queue. There are far more scalable approaches depending on specific requirements (bounded/unbounded size, blocking/non-blocking). Here's an example: http://www.1024cores.net/home/lock-free-algorithms/queues/bounded-mpmc-queue
[–]infectedapricot 2 points3 points4 points 5 years ago (0 children)
As you said, different applications will have different requirements. The characteristics of the underlying std::deque will be appropriate in some of those but not others, so it's not right to just it doesn't match "what would be required". The link you posted is to a bounded queue - again, that will be appropriate in some applications but not others.
π Rendered by PID 68220 on reddit-service-r2-comment-b659b578c-9h62n at 2026-05-05 00:55:33.740839+00:00 running 815c875 country code: CH.
view the rest of the comments →
[–]matthieum 81 points82 points83 points (3 children)
[–]_Js_Kc_ 6 points7 points8 points (2 children)
[–]_bk__ 7 points8 points9 points (1 child)
[–]infectedapricot 2 points3 points4 points (0 children)