读写全局变量加锁问题

作者:超级管理员 更新时间:2017-09-13 16:56:19 来源:未知 点击:15642
定义了一个全局的map,多个用户读写。写操作肯定要加锁,读操作呢?不加会有什么后果,加了对效率的影响有多大?读不需要加锁,你可以搜一下读写锁读写都需要加锁,因为读的时候不能去写,不然读的内容不能保证是
定义了一个全局的map,多个用户读写。写操作肯定要加锁,读操作呢?不加会有什么后果,加了对效率的影响有多大?

读不需要加锁,你可以搜一下读写锁

读写都需要加锁,因为读的时候不能去写,不然读的内容不能保证是写之前还是写之后的。若读写是,多个读,一个写。那么,读可以多次获取锁,但是写的时候所有读操作都停止。
可以查一下互斥锁和读写锁的区别

读不加锁可能会:一半读到修改前的,一半读到修改后的

可以根据需要选适合的锁,做到开销尽可能小

都要加锁的,Map越大性能影响越大。

这种东西内部肯定很多指针操作的,二叉搜索树的增删会涉及到局部节点的旋转也就是指针指向,你在另一处遍历读的时候就可能出错的。

看来需要效率,你去找个读写锁,如果都读都能成功,但是如果有写操作其他读的就会等写操作完成后进行。
这种适合读多写少的场景

同时读和写需要加锁来同步,但是如果都是读的话就不用加锁了,加锁反而影响效率

《Windows核心编程》

* 多个读取者是安全的。多线程可能同时读取一个容器的内容,这将正确地执行。当然,在读取时不能有任何定稿者操作这个容器。

* 对不同容器的多个写入者是安全的。多线程可以同时写不同的容器。

-------------------《effective stl》条款12

相同的内存读写是要加锁的。

如果是 几乎都是读, 很少写的 这种, 可以写一个 lock-free 的  ......  不确定你就弄读写锁呗 ....

推荐阅读

热门内容

神马鬼,一道算是物理题的编程题

原题如下:代码如下:#include

请问一下遍历图像的时候 这种ALU写法为

就是遍历图像的时候, 一次处理2个像素或...

if else 两个语句为什么同时执行了

我的程序里有一个if判断,在dubug下...

求助一个计算问题?

#include in...

请解惑,关于QT用C++写串口通信时的一

我把代码贴出来吧,请帮我看看是哪里出了问...

已添加头文件,但报错找不到标识符

引用错误1error C3861: “r...

错误2365,怎么解决啊,求助

如图这么多短变量名放一块儿,很容易重名的...

感觉现代c++不如d语言

功能都是那些功能,现代c++的实现语法太...

逐行读取文件+并发处理,和先读入整个文件

文本的每一行都是一条记录,程序要求对每条...

C语言新手求助,输出的数字非常大

本帖最后由z4164362于2017-0...

最新内容

高管放话 三星可折叠手机预计明年面世

    三星S8和Note 8目前看来都很成功,这也让三星对可折叠手机的研发充满...

华为首款四摄手机入网 9月22日正式亮相

    中关村在线消息:今天上午,当整个科技圈都沉浸在苹果新品发布会中时,华为官...

四摄像头大屏占比 华为麦芒6下周发布

    在大家都在关注iPhone新机的时候,国产手机领导品牌华为在今早也传来了...

iPhoneX发布抢购将启 苹果产品线降价了

    iPhone X正式发布了,热度可谓是格外高涨。那么作为前代产品的iPh...

乔布斯之后无苹果 库克iPhone败在哪般

    iPhone十周年新品于北京时间凌晨1点发布于史蒂夫·乔布斯剧院。期待之...

读写全局变量加锁问题

定义了一个全局的map,多个用户读写。写操作肯定要加锁,读操作呢?不加会有什么后...

Pyhton——如何实现多线程并行计算

软件大小:17.8KB资源类型:不详授权方式:免费/开源资料   主要内容:  ...

测试小白谈web测试

  前段时间测试官网和后台,提bug给我们后台程序员的时候,他问什么浏览器,我说...

用ifstream读UTF8格式文件的时候遇到了问题,求解

我要读一个xml文件,是utf8无BOM格式的方法是先ifstream打开文件用...

c++的并行现在是什么情况

主要是在什么地方用啊,hadoop是java写的,当然现在淘汰了,spark是s...

android studio 前台有个地方不懂

刚开始做安卓, 这个标题栏的问题搞了一天,就是出现不了,网上也没找到例子,哪个大...

浅析基于Selenium和TestNG的自动化测试框架

  导语:  互联网产品迭代迅速,敏捷开发模式逐渐盛行,敏捷开发模式下的敏捷测试...

iphone7plus现在升级了gm版还是会自动注销

快奔溃了,不知道是不是哪个软件不兼容。有哪个老铁知道吗?跪求了!我从来没出现过,...

请问今天更新的新版itunes如何导入铃声?

请问今天更新的新版itunes如何导入铃声?...

升级了gm没震动了

只是响铃的一瞬间轻微震一下该开的都开了啊你们是这样不?郁闷更新时96电,更新完成...

听筒声音特别小,不捂着另一只耳朵都听不到说什么,而听筒声音我已经放到最大了!

求解决方案可能听筒网堵起来了!把听筒那的网子用针扎扎就好了找一个干牙刷狠狠的刷刷...

锋友们,帮忙看看10.2的系统,电量正常嘛?有必要升10.33吗?

谢谢大家了,一定会仔细参考各位锋友的建议的。真心谢过啦!!!顺便问问这个现在能卖...

测试用例设计进阶(下)

  场景分析法设计测试用例—场景分析相关概念  场景  应用软件一般都是用事件触...

测试分布式系统的线性一致性

  正确实现一个分布式系统是非常有挑战的一件事情,因为需要很好的处理并发和失败这...

Android UI测试之Espresso使用

  暑假实习的单位,被分到了一个测试组,因为我是搞android开发的,所以被分...