当前位置: 首页 > news >正文

互联网招聘网站百度手机助手下载安装最新版

互联网招聘网站,百度手机助手下载安装最新版,网站制作公司小邓,网站建设教程 第十课 cf战队网站制作教程和源码一、简介 读写锁(Read-Write Lock)是一种并发控制机制,用于多线程环境中实现对共享资源的高效读写操作。读写锁允许多个线程同时读取共享资源,但在有写操作时,需要互斥地独占对共享资源的访问,以确保数据的…

一、简介

读写锁(Read-Write Lock)是一种并发控制机制,用于多线程环境中实现对共享资源的高效读写操作。读写锁允许多个线程同时读取共享资源,但在有写操作时,需要互斥地独占对共享资源的访问,以确保数据的一致性。

二、shared_mutex

std::shared_mutex 是 C++17 引入的,用于实现共享/独占访问控制,以下是简单示例:

#include <iostream>
#include <thread>
#include <shared_mutex>std::shared_mutex rwLock;
int sharedData = 0;  // 共享资源void readerFunction(int id) {while (true) {rwLock.lock_shared();std::cout << "Reader " << id << " reads sharedData: " << sharedData << std::endl;rwLock.unlock_shared();// 模拟一些耗时操作std::this_thread::sleep_for(std::chrono::milliseconds(500));}
}void writerFunction(int id) {while (true) {rwLock.lock();sharedData++;std::cout << "Writer " << id << " writes sharedData: " << sharedData << std::endl;rwLock.unlock();// 模拟一些耗时操作std::this_thread::sleep_for(std::chrono::milliseconds(1000));}
}int main() {const int numReaders = 3;const int numWriters = 3;std::thread readers[numReaders];std::thread writers[numWriters];// 启动线程for (int i = 0; i < numReaders; i++) {readers[i] = std::thread(readerFunction, i);}for (int i = 0; i < numWriters; i++) {writers[i] = std::thread(writerFunction, i);}// Join线程for (int i = 0; i < numReaders; i++) {readers[i].join();}for (int i = 0; i < numWriters; i++) {writers[i].join();}return 0;
}

三、自定义 ReadWriteLock

C++17前可以通过 mutexcondition_variable 实现一个自定义的读写锁。代码如下:

#include <mutex>
#include <condition_variable>class ReadWriteLock {
public:ReadWriteLock() : readersCount(0), writing(false) {}void lockRead() {std::unique_lock<std::mutex> lock(mutex_);readCondition_.wait(lock, [this] { return !writing; });readersCount++;}void unlockRead() {std::unique_lock<std::mutex> lock(mutex_);readersCount--;if (readersCount == 0) {writeCondition_.notify_one();}}void lockWrite() {std::unique_lock<std::mutex> lock(mutex_);writeCondition_.wait(lock, [this] { return readersCount == 0 && !writing; });writing = true;}void unlockWrite() {std::unique_lock<std::mutex> lock(mutex_);writing = false;readCondition_.notify_all();writeCondition_.notify_one();}private:std::mutex mutex_;std::condition_variable readCondition_;std::condition_variable writeCondition_;int readersCount;bool writing;
};

使用示例:

#include <iostream>
#include <thread>
#include "ReadWriteLock.hpp" // 包含上面ReadWriteLock的头文件int sharedData = 0;  // 共享数据
ReadWriteLock rwLock;void readerFunction(int id) {while (true) {rwLock.lockRead();std::cout << "Reader " << id << " reads sharedData: " << sharedData << std::endl;rwLock.unlockRead();// 模拟一些耗时操作std::this_thread::sleep_for(std::chrono::milliseconds(500));}
}void writerFunction(int id) {while (true) {rwLock.lockWrite();sharedData++;std::cout << "Writer " << id << " writes sharedData: " << sharedData << std::endl;rwLock.unlockWrite();// 模拟一些耗时操作std::this_thread::sleep_for(std::chrono::milliseconds(1000));}
}int main() {const int numReaders = 3;const int numWriters = 3;std::thread readers[numReaders];std::thread writers[numWriters];// 启动线程for (int i = 0; i < numReaders; i++) {readers[i] = std::thread(readerFunction, i);}for (int i = 0; i < numWriters; i++) {writers[i] = std::thread(writerFunction, i);}// Join线程for (int i = 0; i < numReaders; i++) {readers[i].join();}for (int i = 0; i < numWriters; i++) {writers[i].join();}return 0;
}
http://www.hengruixuexiao.com/news/41272.html

相关文章:

  • 兴化市政府门户网站城乡建设营销网站建设培训学校
  • 网站建设中模板下载sem工资
  • 做网站商城必须要买空间吗竞价托管收费标准
  • 专门做当归的网站seo是什么意思呢
  • 下载的网站模版怎么用青岛网站建设维护
  • wordpress主题改字体颜色优化大师的使用方法
  • 网站建设合同交什么印花税石家庄新闻网头条新闻
  • 本地做的网站如何映射出去ip域名查询网站入口
  • 做购物网站需要什么资质网络推广工作好吗
  • 买个域名就可以建立网站吗深圳seo培训
  • 兰州网站优化公司营销网站有哪些
  • html首页代码河南靠谱seo电话
  • 石家庄解封最新政策北京专业seo公司
  • 做网站多少人深圳疫情最新情况
  • phpstudy网站端口咸阳seo
  • 易企秀怎么做网站链接关键词调整排名软件
  • 做室内装修的网站专业网站建设公司首选
  • 网站搭建有免费的吗网站排名优化方案
  • 自己建设个人网站要花费多少西安今天出大事
  • 网站建设与管理实验报告seo关键词挖掘
  • 深圳html5网站建设价格公众号运营
  • 网站设计联系方式百度的主页
  • 各大网站收录入口t和p在一起怎么做网站
  • 第一次做网站时是怎样的心情网络营销推广策略
  • 农业建设管理信息网站最好的营销策划公司
  • 营销型网站建设哪家便宜搜狗关键词排名查询
  • 申请域名后可以做自己的网站吗百度竞价推广登录入口
  • 建设手机网站培训教程国际最新新闻
  • 网络科技公司简介范文谷歌seo培训
  • 关于域名用于非网站用途抖音搜索seo