C++17实现的读写锁「建议收藏」

C++17实现的读写锁「建议收藏」1.shared_mutex和shared_lock很有意思的两个关于共享线程锁的特性#include#include<shared_mutex>#include#include#includeusingnamespacestd;classCounter{public:std::size_tGet()const{std::shared_lockstd:…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1.shared_mutex和shared_lock很有意思的两个关于共享线程锁的特性
#include
#include<shared_mutex>
#include
#include
#include
using namespace std;
class Counter
{

public:
std::size_t Get() const
{

std::shared_lockstd::shared_mutex lock(mtx);
return value_;
}
void Increase()
{

std::unique_lockstd::shared_mutex lock(mtx);
value_++;
}
void Reset()
{

std::unique_lockstd::shared_mutex lock(mtx);
value_=0;
}
private:
mutable std::shared_mutex mtx;
std::size_t value_ = 0;
};
std::mutex g_mtx;
void worker(Counter &counter)
{

for (int i = 0; i < 3; i++)
{

counter.Increase();
std::size_t value = counter.Get();
std::lock_guardstd::mutex lock(g_mtx);
cout << std::this_thread::get_id() << ” ” << value << endl;
}
}
int main()
{

const std::size_t size = 2;
Counter counter;
vectorstd::thread v;
v.reserve(size);
v.emplace_back(worker, std::ref(counter));
v.emplace_back(worker, std::ref(counter));
for (std::thread &t : v)
{

t.join();
}
system(“pause”);
return 0;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169997.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Django(30)Django常用的模板标签

    Django(30)Django常用的模板标签常用的模板标签if标签if标签相当于Python中的if语句,有elif和else相对应,但是所有的标签都需要用标签符号({%%})进行包裹。if标签中可以使用==、!=、<、<=、&

    2022年8月7日
    1
  • mmse评估量表_简易精神状态评价量表(mmse量表) 打印版.doc[通俗易懂]

    简易精神状态评价量表(mmse量表)15016简易精神状态评价量表(MMSE)项目积分定向力(10分)1.今年是哪一年现在是什么季节?现在是几月份?今天是几号?今天是星期几?11111000002.你住在那个省?你住在那个县(区)?你住在那个乡(街道)?咱们现在在那个医院?咱们现在在第几层楼?1111100000记忆力(3分)3.告诉你三种东西,我说完后,请你重复一遍并记住,待会还会问你(各1分,…

    2022年4月18日
    49
  • Mac OS设置rootpassword

    Mac OS设置rootpassword

    2022年1月24日
    57
  • Servlet3.0新特性

    Servlet3.0新特性

    2022年3月1日
    39
  • visdom 使用教程

    visdom 使用教程visdom教程visdom安装与启动服务visdom常用功能image窗口:图像显示与更新窗口显示images窗口:多个图像显示与更新窗口显示text窗口:显示文本与更新文本line窗口:绘制折线图与更新折线图scatter窗口:绘制散点图与更新散点图visdom安装与启动服务安装visdompipinstallvisdom打开服务python-mvisdom.server…

    2022年6月24日
    29
  • webpack基本配置项_webpack配置文件详解

    webpack基本配置项_webpack配置文件详解前言上篇我们已经配置好了本地开发服务器,但是配置的相对比较凌乱,一个文件中有些是开发时用到的配置,有些是生成时用到的配置,有些是开发和生成都要用到的配置,所以我们这里把环境分为3个环境webpac

    2022年8月7日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号