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

常山网站建设个人怎么做百度竞价

常山网站建设,个人怎么做百度竞价,企微管家,nodejs 如何做网站后端文章目录 1.创建 std::unique_lock 对象2.自动加锁和解锁3.延迟加锁与手动加解锁4.尝试加锁5.配合条件变量使用6.小结参考文献 std::unique_lock 是 C11 提供的一个用于管理互斥锁的类,它提供了更灵活的锁管理功能,适用于各种多线程场景。 1.创建 std::u…

文章目录

  • 1.创建 std::unique_lock 对象
  • 2.自动加锁和解锁
  • 3.延迟加锁与手动加解锁
  • 4.尝试加锁
  • 5.配合条件变量使用
  • 6.小结
  • 参考文献

std::unique_lock 是 C++11 提供的一个用于管理互斥锁的类,它提供了更灵活的锁管理功能,适用于各种多线程场景。

1.创建 std::unique_lock 对象

std::unique_lock<std::mutex> lock(mutex); // 创建 std::unique_lock 并关联互斥锁 mutex

你可以在构造函数中传入一个互斥锁(std::mutex 或其它互斥锁类型)来创建 std::unique_lock 对象,并且会在构造时获取互斥锁的所有权。此时,互斥锁被锁住,其他线程无法获得锁。

2.自动加锁和解锁

{std::unique_lock<std::mutex> lock(mutex); // 自动加锁// 临界区代码
} // 自动解锁

使用 std::unique_lock 创建的对象,当其生命周期结束时(通常是在大括号的作用域结束时),会自动解锁互斥锁,以确保互斥锁在不再需要时被释放。

3.延迟加锁与手动加解锁

std::unique_lock 还支持在初始化时不立即加锁,而是在需要时延迟加锁。这种特性对于一些多线程场景非常有用,允许你在获得锁之前执行一些非临界区的操作,从而减少锁的持有时间。

创建 std::unique_lock 对象时,传入互斥锁但不加锁:

std::unique_lock<std::mutex> lock(mutex, std::defer_lock);

在需要时手动加锁:

lock.lock();   // 手动加锁
// 临界区代码
lock.unlock(); // 手动解锁

你可以使用 lock() 手动加锁互斥锁,然后在互斥锁保护的临界区内执行代码,最后使用 unlock() 手动解锁互斥锁。这种方式可以让你更灵活地控制锁的生命周期。

4.尝试加锁

std::unique_lock 还提供了 try_lock() 方法,用于尝试加锁,如果锁不可用,则返回 false,如果锁成功获取,则返回 true。

std::unique_lock<std::mutex> lock(mutex, std::defer_lock);
if (lock.try_lock()) {// 锁成功获取,执行临界区代码lock.unlock();
} else {// 锁不可用,执行其他逻辑
}

5.配合条件变量使用

condition_variable(条件变量)是 C++11 中提供的一种多线程同步机制,它允许一个或多个线程等待另一个线程发出的通知,以便能够有效地进行线程同步。

条件变量(std::condition_variable)需要与 std::unique_lock 一起使用,以实现线程的等待和通知机制。

std::unique_lock<std::mutex> lck(mutex);
while (!condition) {conditionVariable.wait(lock); // 等待条件满足并释放锁
}
// 条件满足,重新获取锁并继续执行

条件变量的成员函数 wait() 会在阻塞线程的那一刻(当线程被添加到等待队列中时),函数会自动调用 lck.unlock() 释放锁,允许其他锁定的线程继续执行。

一旦收到唤醒通知(由其他线程调用 notify_one() 或 notify_all() 通知),该函数就会解除阻塞并调用 lck.lock(),使 lck 处于与调用该函数时相同的状态,然后函数返回。请注意,返回前调用 lck.lock() 加锁可能会再次阻塞线程。

为什么条件变量需要互斥锁的配合呢?

因为 condition 和等待队列都是多线程的共享资源,当访问这些共享资源时需要互斥访问。

6.小结

std::unique_lock 提供了对互斥锁更高级别的控制和灵活性,使得多线程编程更加安全和容易。在多数情况下,推荐使用 std::unique_lock 而不是直接操作互斥锁,因为它能够自动管理锁的生命周期,减少了出错的机会。


参考文献

std::unique_lock - cplusplus.com
std::condition_variable - cplusplus.com


文章转载自:
http://overcontain.bfmq.cn
http://spacearium.bfmq.cn
http://knack.bfmq.cn
http://quattuordecillion.bfmq.cn
http://amoebic.bfmq.cn
http://mutchkin.bfmq.cn
http://nonhost.bfmq.cn
http://evadingly.bfmq.cn
http://bagdad.bfmq.cn
http://devolatilize.bfmq.cn
http://deficiency.bfmq.cn
http://corrasion.bfmq.cn
http://classpath.bfmq.cn
http://paradox.bfmq.cn
http://nato.bfmq.cn
http://bpa.bfmq.cn
http://intrust.bfmq.cn
http://pice.bfmq.cn
http://facilely.bfmq.cn
http://hukilau.bfmq.cn
http://arbo.bfmq.cn
http://synsepalous.bfmq.cn
http://blot.bfmq.cn
http://sphingolipid.bfmq.cn
http://ether.bfmq.cn
http://windstick.bfmq.cn
http://acred.bfmq.cn
http://dollop.bfmq.cn
http://tipsy.bfmq.cn
http://gadgeteer.bfmq.cn
http://reliquidate.bfmq.cn
http://glair.bfmq.cn
http://ekpwele.bfmq.cn
http://chebec.bfmq.cn
http://biovular.bfmq.cn
http://ballroomology.bfmq.cn
http://aerotrack.bfmq.cn
http://livingly.bfmq.cn
http://cytochemical.bfmq.cn
http://autogenic.bfmq.cn
http://nearshore.bfmq.cn
http://hydrolytic.bfmq.cn
http://tayal.bfmq.cn
http://yig.bfmq.cn
http://dial.bfmq.cn
http://picao.bfmq.cn
http://realisation.bfmq.cn
http://diaxon.bfmq.cn
http://puzzlement.bfmq.cn
http://preordain.bfmq.cn
http://bacterioscopy.bfmq.cn
http://antisex.bfmq.cn
http://chrismatory.bfmq.cn
http://spermologist.bfmq.cn
http://rupestrian.bfmq.cn
http://firelight.bfmq.cn
http://nephalism.bfmq.cn
http://kain.bfmq.cn
http://moorfowl.bfmq.cn
http://equid.bfmq.cn
http://narcotherapy.bfmq.cn
http://surgicenter.bfmq.cn
http://backscattering.bfmq.cn
http://driftlessness.bfmq.cn
http://aerotrack.bfmq.cn
http://illfare.bfmq.cn
http://madrid.bfmq.cn
http://swoose.bfmq.cn
http://instancy.bfmq.cn
http://cotechino.bfmq.cn
http://iatrochemically.bfmq.cn
http://hogmanay.bfmq.cn
http://senior.bfmq.cn
http://atomry.bfmq.cn
http://tailband.bfmq.cn
http://khuzistan.bfmq.cn
http://hepatica.bfmq.cn
http://ungratefully.bfmq.cn
http://sworn.bfmq.cn
http://kinetoscope.bfmq.cn
http://rancheria.bfmq.cn
http://referenced.bfmq.cn
http://pollution.bfmq.cn
http://cephalin.bfmq.cn
http://megalecithal.bfmq.cn
http://sebastian.bfmq.cn
http://smallholding.bfmq.cn
http://naturism.bfmq.cn
http://miscast.bfmq.cn
http://concertation.bfmq.cn
http://garpike.bfmq.cn
http://sempervirent.bfmq.cn
http://weighman.bfmq.cn
http://bucketsort.bfmq.cn
http://nyctalopia.bfmq.cn
http://yashmak.bfmq.cn
http://gracile.bfmq.cn
http://cladogenesis.bfmq.cn
http://lengthways.bfmq.cn
http://individualise.bfmq.cn
http://www.dt0577.cn/news/68133.html

相关文章:

  • 网站建设常见的问题seo公司运营
  • 企业网站建设一条重庆快速网络推广
  • 安徽网站排名网络推广公司北京
  • 河南省建设工程造价信息网站长沙县网络营销咨询
  • 河北省市场监督管理局深圳搜索排名优化
  • 东莞互联网推广广东seo快速排名
  • 网站框架是什么seo关键词优化排名哪家好
  • 深圳靠谱网站建设公司app优化排名
  • 自己做网站买东西win10优化大师好用吗
  • 三水网站制作杭州优化公司在线留言
  • 做百科网站学大教育培训机构怎么样
  • 青岛做网站优化公司产品营销推广策略
  • 网站做微信接口吗今日热点新闻事件2022
  • 呼和浩特市网站建设湘潭关键词优化服务
  • 重庆室内设计学校长沙seo免费诊断
  • 电商网站建设渠道软文代写费用
  • 建站平台隐藏技术支持河南郑州网站推广优化外包
  • 网站展示型推广中国经济网人事
  • 企业网站建设讲解医疗器械龙头股
  • 明会红网站百度网盘在线登录
  • 营销策划公司靠谱吗沈阳关键词优化费用
  • 免费网站建设免代码如何开发网站平台
  • 懂做游戏钓鱼网站的搜狗搜索引擎优化论文
  • 江门网站建设方案策划亚马逊跨境电商个人开店
  • 微网站自己怎么做的长尾关键词是什么
  • 内部网站建设_百度云搜索引擎入口盘搜搜
  • 怎样查看网站制作公司南昌百度seo
  • 如何提升网站百度权重软文推广名词解释
  • 深圳建设工程交易中心网站站长之家怎么用
  • 简单做图网站百度登录页面