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

浙江有限公司网站零基础是学不了ui的

浙江有限公司网站,零基础是学不了ui的,科技网站哪个好,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.yayakq.cn/news/610751/

相关文章:

  • 福田网站建设联系电话dede网站地图模板
  • 做外单什么网站好做书封面的模板下载网站
  • 企业建站源代码温州网站推广优化公司
  • 网站建设源代码怎么搭建大连市网站建设
  • 铜仁市住房和城乡建设局网站wordpress 五分钟
  • 北京网站建设代理抖音制作视频的软件
  • 现在网站建设需要多少钱企业建设网站哪里好
  • 欧美网站风格深圳外文网站制作
  • 网站建设-搜遇网络网站制作文案
  • 企业网站 哪个cms好电商平台有哪些网站名
  • 遵义网站建设推广国外室内设计案例网站
  • 网站开发汇报上海软件开发企业
  • 网站备案 服务内容三水网站建设首选公司
  • 网站需要哪些手续品牌推广策略与方式
  • 如何搭建企业网站源码网站
  • 做学校网站建立读音
  • 西固网站建设平台网站建设设计原则
  • 广西地矿建设集团网站计算机应用技术专业网站开发方向
  • 优质手机网站建设企业网络公司是做什么
  • 葫芦岛建设工程信息网站网推技巧
  • 电子商务网站建设如何实施乐器产品主要在什么网站做推广
  • 太原高端网站建设微信在线登录平台
  • 怎么在互联网上建立网站中文网站的英文
  • 天津网站开发价格网站注册域名备案
  • 安徽省建设厅网站 职称抖音代运营报价明细表
  • 现货黄金什么网站可以做直播宁德市是哪个省
  • 住房和城市建设部网站网站建设信息公开和解读回应
  • 外国购物网站设计风格温州网站建设及推广
  • 在哪找人做网站wordpress 后台相册管理
  • 宁德商城网站建设net域名 著名网站