文档章节

关于C++锁

Yan9527
 Yan9527
发布于 2017/07/07 11:12
字数 259
阅读 6
收藏 0

一,锁的作用是用来保护全局变量的,例如,static静态数据,global全局数据,或者new和malloc等数据,还有单例模式的类。

 

二,锁的范围是什么,锁的范围是以{ }为生命周期。

 

三,不出现死锁的模型是:lock unlock必须成对出现 ,或者是不同数据使用不同的锁。

四,死锁的模型

1,lock lock unlock unlock  

2,lock   return unlock

3,A中lock 调用B而B中也lock,

4,注意lock的范围。

5, 获取锁顺序不一致导致互相等待: 线程1 -- lock(B)等待A, 线程2 -- lock(A)等待B

 

 

五,lock的作用与缺点

1,一般对于临时变量或者new的不同类对象或者参数传递过来的数据,都不会出现死锁。

锁的作用就是保护数据防止数据被篡改。

2,锁会占用很多资源限制程序速度,所以使用锁要特别注意,同时控制好范围相当重要。

本文转载自:http://blog.sina.com.cn/s/blog_9b0604b40102uxa2.html

Yan9527
粉丝 0
博文 31
码字总数 11309
作品 0
海淀
后端工程师
私信 提问
C++雾中风景12:聊聊C++中的Mutex,以及拯救生产力的Boost

笔者近期在工作之中编程实现一个Cache结构的封装,需要使用到C++之中的互斥量Mutex,于是花了一些时间进行了调研。(结果对C++标准库很是绝望....)最终还是通过利用了Boost库的shared_mute...

LeeHappen
2018/10/06
0
0
有人要我挑战STL 质量, 很简单.

我很多年没有碰C++了, 下面是10年前的代码, 模板来做到数据类型无关, 用于在多个进程当中实现循环链表,用于消息队列. 新的版本,用一个局部对象,来实现锁. 实现这个的目的是在于通过设置固定大...

宏哥
2012/10/12
9.9K
132
C++笔记(一)20110223

近日,公司准备用C++来做个类似openmeetings的软件。C++只是在学校时学习了,当当购了三本《Visal C++ 入门经典(第五版)》、《深入浅出MFC》、《Visaual C++ 音频你/视频处理技术及工程实践...

钟小华
2011/02/23
340
0
Thrift第七课 服务器多线程发送异常

场景 C++服务器端为每一个客户端建立多线程发送,没有添加锁,会触发异常:received invalid message type 3 from client。导致服务器端主动断开跟客户端的连接 打印出错的代码在TDispatchPr...

fengyuzaitu
2018/05/02
0
0
C#转C++的一点分享

从C#转C++有段时间了,一直想分享点什么,但又不太好意思分享,毕竟自己做C++的时间不太长,最近感觉自己已能胜任现有工作,想分享的想法又强了点,前几天看到这样一篇博客《那些年·我们读过的专业...

爱情经纬线
2014/01/17
4K
11

没有更多内容

加载失败,请刷新页面

加载更多

EDI 电子数据交换全解指南

EDI(Electronic Data Interchange,电子数据交换)技术使得企业与企业(B2B)实现通信自动化,帮助交易伙伴和组织更快更好地完成更多工作,并消除了人工操作带来的错误。从零售商到制造商、物...

EDI知行软件
今天
3
0
CentOS7的LVM动态扩容

# 问题 CentOS7上面的磁盘空间有点紧张,需要扩容。 解决 查询当前磁盘状态 [root@xxx ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTfd0 2:0 1 4K ...

亚林瓜子
今天
5
0
Kafka 0.8 Producer (0.9以前版本适用)

Kafka旧版本producer由scala编写,0.9以后已经废除 示例代码如下: import kafka.producer.KeyedMessage;import kafka.javaapi.producer.Producer;import kafka.producer.ProducerConfig;......

实时计算
今天
5
0
Giraph源码分析(八)—— 统计每个SuperStep中参与计算的顶点数目

作者|白松 目的:科研中,需要分析在每次迭代过程中参与计算的顶点数目,来进一步优化系统。比如,在SSSP的compute()方法最后一行,都会把当前顶点voteToHalt,即变为InActive状态。所以每次...

数澜科技
今天
6
0
Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部