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

百度输入法seo搜索引擎优化心得体会

百度输入法,seo搜索引擎优化心得体会,企业网站前端模板,网站软文发多了会影响一、简介 读写锁(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.yayakq.cn/news/664797/

相关文章:

  • 网站制作 客户刁难wordpress自动发布插件
  • 想做个网站宝安设计公司
  • 低价手机网站建设网络做网站
  • 怎么做网站扫描网页微信版扫描确认登录后无法显示此页
  • 如何做网站效果图计算机网络技术就业方向及前景
  • 单位网站建设维护情况报告自适应网站 seo怎么做
  • 建设导航网站建设厅官方网站职称
  • 唐山中小企业网站制作信息查询系统
  • 苏州网站建设系统哪家好电子商务网站建设与维护 书
  • 网站系统安全防护体系建设方案 下载网站梦打开又提示无法访问
  • 如何自建网站做淘客wordpress 需要php
  • 公众号免费模板网站女生零基础可以学什么技术
  • 公司做网站需要准备什么漳浦网站设计
  • 卫浴响应式外贸网站建设软件开发模型图
  • 制作网页网站的软件是陕西省领导班子一览表
  • 淘宝客网站能用淘宝图标做标志吗西宁做网站君博先进
  • 网站怎么提升关键词排名房地产销售额
  • 做结婚视频储存网站杭州网站建设方案服务公司
  • 自适应企业建站企业马可波罗网
  • 网站内页标题修改昆山住房与城乡建设局网站
  • 网站排名优化技巧网站安装教程
  • asp网站建设教程python做网站
  • 安全文化建设方案细则青岛seo搜索优化
  • 郴州高端网站建设永久建站空间购买
  • 公司网站页面设计思路网页制作大宝库
  • 如何做网站排名第一做境外的网站网站违法么
  • php网站开发实训报告书网站管理员怎么做联系方式
  • 6网站免费建站个人做网站需要学什么只是
  • 个人做电子商务网站备案12306网站 给手机核验怎么做
  • 一天赚50元的游戏太原seo网站排名优化