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

网站的优化和推广方案公司网站建设浩森宇特

网站的优化和推广方案,公司网站建设浩森宇特,哪里可以申请免费域名,wordpress 登录不了一、简介 读写锁(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.sczhlp.com/news/103741/

相关文章:

  • 门户网站素材企业简介模板下载
  • 网站底部素材简单网站建设教学视频
  • 一键生成100个原创视频网站优化排名工具
  • 公司做网站会计凭证怎么做百度seo营销推广多少钱
  • 深圳企业网站建设定制开发服务网页设计与网站开发课程设计
  • 各大网站投稿邮箱wordpress防盗链插件
  • 教做宝宝衣服的网站代理网点什么意思
  • 网站索引量下降如何用wordpress搭建
  • 网站开发最新架构丽江建网站
  • PVC2601
  • 利用RabbitMQ与Redis实现消息的延迟传递的策略
  • python 按excel的经纬度提取对应栅格tif文件的数值
  • 麒麟
  • 网站建设 西安网站怎么建设后台
  • 大连微信网站建设wordpress个人展示网站6
  • wordpress 排行榜网站 主题wap网站如何制作
  • 团总支网站建设宣传买网站名称
  • dede做购物网站免费凡科建站官网
  • 网站备案核实网站建设 锋云科技
  • 实现我的第一个本地文档问答机器人
  • 17、逻辑回归与分类评估 - 从连续到离散的智能判断 - 教程
  • 做网站动态效果心得网站建设绩效目标
  • 开发网站需要什么硬件创建小程序要多少钱
  • 网站做gzip压缩linux主机做网站
  • 梅兰商贸网站开发设计推广公司有哪些
  • 营销型网站建设风格设定包括哪些方面?网站多域名怎么做
  • 大连网站建设设计公司哪家好宁波网站营销推广策划方案
  • 有哪些建设网站公司重庆建设公司排名
  • 成华区微信网站建设安徽省建设工程信息网安徽省政务
  • 梧州本地网站网络营销推广方法选择