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

搞钱的路子网站/seo站长工具是什么

搞钱的路子网站,seo站长工具是什么,会泽做网站,公司的网站怎么做推广目录std::mutex 成员函数std::lock_guardstd::unique_lockstd::mutex实测代码std::mutex 是C11 中最基本的互斥量,std::mutex 对象提供了独占所有权的特性——即不支持递归地对 std::mutex 对象上锁。std::mutex 成员函数 构造函数 std::mutex不允许拷贝构造&#…

目录

  • std::mutex 成员函数
  • std::lock_guard
  • std::unique_lock
  • std::mutex实测代码

std::mutex 是C++11 中最基本的互斥量,std::mutex 对象提供了独占所有权的特性——即不支持递归地对 std::mutex 对象上锁。

std::mutex 成员函数

构造函数

std::mutex不允许拷贝构造,也不允许 move 拷贝,最初产生的 mutex 对象是处于 unlocked 状态的。

lock()

1、如果该互斥量当前没有被锁住,则调用线程将该互斥量锁住,直到调用 unlock之前,该线程一直拥有该锁。
2、 如果当前互斥量被其他线程锁住,则当前的调用线程被阻塞住。
3、 如果当前互斥量被当前调用线程锁住,则会产生死锁(deadlock)。

unlock()

解锁,释放对互斥量的所有权。

try_lock()

尝试锁住互斥量,如果互斥量被其他线程占有,则当前线程也不会被阻塞。线程调用该函数也会出现下面 3 种情况:
1、 如果当前互斥量没有被其他线程占有,则该线程锁住互斥量,直到该线程调用 unlock 释放互斥量。
2、 如果当前互斥量被其他线程锁住,则当前调用线程返回 false,而并不会被阻塞掉。
3、 如果当前互斥量被当前调用线程锁住,则会产生死锁(deadlock)。(这一条存疑,实测单线程内先lock再trylock,不会死锁,会有1ms以内的停顿,trylock返回false)

std::lock_guard

lock_guard是一个互斥量包装程序,它提供了一种方便的RAII(Resource acquisition is initialization )风格的机制来在作用域块的持续时间内拥有一个互斥量。
创建lock_guard对象时,它将尝试获取提供给它的互斥锁的所有权。当控制流离开lock_guard对象的作用域时,lock_guard析构并释放互斥量。

1、创建即加锁,作用域结束自动析构并解锁,无需手工解锁
2、不能中途解锁,必须等作用域结束才解锁
3、不能复制

std::unique_lock

unique_lock是lock_guard的升级版,它允许延迟锁定,限时深度锁定,递归锁定,锁定所有权的转移以及与条件变量一起使用。

1、创建时可以不锁定(通过指定第二个参数为std::defer_lock),而在需要时再锁定
2、可以随时加锁解锁
3、作用域规则同 lock_grard,析构时自动释放锁
4、不可复制,可移动
5、条件变量需要该类型的锁作为参数(此时必须使用unique_lock)

lock_guard 和unique_lock 并不管理 std::mutex 对象的生命周期,在使用 lock_guard 的过程中,如果 std::mutex 的对象被释放了,那么在 lock_guard 析构的时候进行解锁就会出现空指针错误。

std::mutex实测代码

#include <mutex>
#include <unistd.h>
std::mutex g_mutex;
pthread_t Tid[10];
void* threadfunc0(void*)
{printf("threadfunc0\n");std::unique_lock<std::mutex> locker(g_mutex);
//    g_mutex.unlock();/*如果执行,则立即打印threadfunc1,after lock,不会等待5秒*/sleep(5);return nullptr;
}void* threadfunc1(void*)
{printf("threadfunc1\n");std::unique_lock<std::mutex> locker(g_mutex);if(g_mutex.try_lock() == true)//不会死锁,返回false,有1ms内的停顿{printf("try_lock\n");g_mutex.unlock();}printf("threadfunc1,after lock\n");return nullptr;
}MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);setbuf(stdout,nullptr);pthread_create(&Tid[0],nullptr,threadfunc0,nullptr);usleep(100);pthread_create(&Tid[1],nullptr,threadfunc1,nullptr);
}

打印

threadfunc0
threadfunc1
(等待5秒)
threadfunc1,after lock
http://www.lbrq.cn/news/1581715.html

相关文章:

  • 南京移动网站建设/网页设计
  • 宠物店做网站的论文/青岛神马排名优化
  • 网站建设先进个人事迹/宁德市人民政府
  • 即墨疫情最新消息今天封城了/快抖霸屏乐云seo
  • 十大设计创意产品网站/seo技术大师
  • 网站规划结构/关键词优化的建议
  • 国外论文类网站有哪些/网站seo公司
  • 绍兴h5建站/国外seo工具
  • wordpress注册页面主题/seo描述是什么意思
  • 郑州市建筑企业服务中心官网/天津seo网络营销
  • 怎么使用网站模板/百度一下你就知道了
  • 塔城北京网站建设/优化游戏卡顿的软件
  • apicloud wordpress/郑州搜索引擎优化
  • 哪个网站可以做卖房/网时代教育培训机构怎么样
  • 国外有什么好的网站/seo应该怎么做
  • 上海袜网站建设/汽车营销活动策划方案
  • 做建材去什么网站/googleplay官方下载
  • 龙华网站建设主要工作/西安百度推广开户多少钱
  • 专业做公司宣传网站的/交换友链
  • 做美食网站的需求分析/广州seo推广服务
  • 自己有主机怎么做论坛网站/河北百度seo关键词
  • 猪八戒logo设计网站/推广引流图片
  • 提升学历被骗怎么投诉/郑州seo排名优化
  • 深圳市住房和建设局领导班子成员/seo的工作内容
  • 工会网站群建设方案/线上销售平台
  • 天蝎网站推广优化/厦门百度关键词优化
  • web响应式设计 那些网站/如何做运营推广
  • aspnet网站开发案例/重庆seo快速优化
  • 建手机网站软件/seo新站如何快速排名
  • 东台市建设局网站/关键词排名优化公司
  • FFMPEG将H264转HEVC时,码率缩小多少好,以及如何通过SSIM(Structural Similarity Index结构相似性指数)衡量转码损失
  • Kotlin 协程线程切换机制详解
  • 使用 Prometheus+cAdvisor 监控 Docker 容器指标
  • Android 开发问题:The specified child already has a parent.
  • elementui input无法输入问题
  • 【世纪龙科技】数智重构车身实训-汽车车身测量虚拟实训软件