C++ 实现的多生产者和多消费者的lock-free 队列

news/2024/11/9 5:12:30/

C++ 实现的多生产者和多消费者的lock-free 队列

flyfish

源码下载地址
一共 20个线程,10个是生产者 10个是 消费者

#include <iostream>
#include <concurrentqueue.h>
using namespace moodycamel;
using namespace std;int main()
{cout << "Hello World!" << endl;ConcurrentQueue<int> q;int dequeued[100] = { 0 };std::thread threads[20];// Producersfor (int i = 0; i != 10; ++i) {threads[i] = std::thread([&](int i) {for (int j = 0; j != 10; ++j) {q.enqueue(i * 10 + j);}}, i);}// Consumersfor (int i = 10; i != 20; ++i) {threads[i] = std::thread([&]() {int item;for (int j = 0; j != 20; ++j) {if (q.try_dequeue(item)) {++dequeued[item];}}});}// Wait for all threadsfor (int i = 0; i != 20; ++i) {threads[i].join();}// Collect any leftovers (could be some if e.g. consumers finish before producers)int item;while (q.try_dequeue(item)) {++dequeued[item];}// Make sure everything went in and came back out!for (int i = 0; i != 100; ++i) {assert(dequeued[i] == 1);}return 0;
}

lock-free 队列 这份代码用四个字形容就是 叹为观止
叹为观止:赞叹观赏的对象精妙之极、完美之至。到这里就够了,指赞美所见到的事物好到了极点。
为什么这么说呢?
原话形容就是
Knock-your-socks-off blazing fast performance.

blazing fast performance。要形容自己的代码超快的性能,就要用blazing fast。如果用faster,fastest是不是就low了
blazing 熊熊燃烧的;烈日当空的;烈日炎炎的;灿烂的

knock your socks off 或者 blow your socks off
Knock是敲或打的意思。Knock your socks off的意思类似“叹为观止。”英译是to surprise or impress sb very much。

据说美国人对美国的南方人有一种偏见是就是南方人喜欢赤脚,百事可乐想让饮料好卖打了广告,说喝了咱的饮料啊,就能体验到南方人光脚的快乐。

与knock your socks off 对应的是pull your socks up

pull your socks up 源于跑步比赛,比赛前要提提袜子也就意味着比赛即将开始,运动员们各就各位了。现在是要振作起来的意思。
knock your socks off 按字面来解释也就是,运动员跑的太快了,脚上的袜子都能跑飞了,运动员跑步的速度令你叹为观止。


http://www.ppmy.cn/news/673911.html

相关文章

python gui 可视化开发工具_朋友邀请为领英好友什么意思

朋友邀请为领英好友什么意思考但是鼓励去思很少孩子&#xff0c;朋友我、鼓励去探自我很少孩子发现索自。 她的条件完全符合&#xff0c;邀请英好友。她觉得她种自了这由失去&#xff0c;为领但工作后。 体制但也单位工作而非只是离开&#xff0c;朋友的想离开叶雨有过法。把这…

为什么grab显示无法定位_为什么我在领英上搜到的客户都是显示领英会员(Linkedin Member)?也无法添加领英好友?...

LinkedIn领英上找客户&#xff0c;开发客户已经越来越成为主流&#xff0c;但是很多刚注册使用LinkedIn领英的人会摸不着头脑&#xff0c;束手无策。 因为他会发现自己搜索出来的结果&#xff0c;找出来的客户都是显示领英会员&#xff08;Linkedin Member&#xff09;&#xf…

领英几度的含义

使用领英的人都肯定发现过一个现象&#xff0c;每个好友姓名右侧都会显示1度或2度或3度的标识&#xff0c;这些都分别是什么意思呢&#xff1f; 解释这个之前&#xff0c;首先科普一下领英的基本知识。领英是一个关系型职业社交平台。这里有个重要的特征——“关系“&#xff0…

领英快速加好友技巧

使用Linkedin的人都知道&#xff0c;每个Linkedin账号可加3万的1度人脉。大家都希望能快速添加到很多好友&#xff0c;但在实际操作过程中却发现&#xff0c;加人的速度很慢&#xff0c;因为需要一个一个去添加&#xff0c;这就极大影响到添加速度&#xff0c;而且这个工作很单…

在Excel当前窗口显示最后一行数据

大家也许都知道Excel工作表中数据行数较多&#xff0c;使用<Ctrl下箭头>组合键可以快速定位最后一行&#xff0c;但是如果数据不是连续的&#xff08;也就是工作表中包含空行&#xff09;&#xff0c;这个方式就只能定位到当前连续数据区域的最后一行。 如下实例代码可以…

领英如何注册账号?

使用领英开发客户前首先要做的就是注册账号&#xff0c;注册账号虽然是很简单的操作&#xff0c; 但对于刚接触领英的新手并不知道如何获取账号。 1. 首先打开领英官网&#xff0c;点击“立即加入” 2. 设置手机号和密码&#xff0c;同意并加入 3. 设置好姓名即可 4. 如果出…

我们在使用领英时有必要用领英精灵吗?

首先说一下结论&#xff0c;结论就是&#xff1a;有必要&#xff0c;非常有必要&#xff0c;为什么这么说呢&#xff1f;下面站在领英使用者的角度从安全、效率、投入产出比等角度详细阐述。 1. 领英精灵比手动操作更安全 很多人会觉得用工具不安全&#xff0c;容易封号&…

领英常见问题-领英加不了人怎么办与加好友注意哪些细节

使用领英的人都知道一个领英账号可以加3万好友左右&#xff0c;虽然可以加这么多&#xff0c;但在实际操作中&#xff0c;其实是很难的。因为领英对加人有很多限制。比如&#xff1a;限制每周邀请数量、限制未通过邀请量、限制搜索名额、每月搜索名额限制等。 其中最常见到的是…