E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
C++11自旋锁
c++11
实现写优先的读写锁
先直接贴出代码:#ifndef__WRITE_FIRST_RW_LOCK_H#define__WRITE_FIRST_RW_LOCK_H#include#includeclassWfirstRWLock{public:WfirstRWLock()=default;~WfirstRWLock()=default;public:voidlock_read(){std::unique_lockulk(c
游学四方
·
2023-11-28 05:27
开源软件使用
多线程
c++
并发编程
C++11
读写锁的实现
参考的源码读写锁,一直都有听,也大概知道点原理,一直没有探究内部是如何实现的,正好今天完成了几项大作业,研究一下读写锁实现的原理。读写锁的原理就是,可以多次读,但是写只能一次一次的写入,我参考的源码博主控制了写优先,并且读的优先级没我写的这么高。我自己在修改了他的源码,实现的是读优先,并且优先级很高,如果存在大量的读操作,可能会出现写操作线程饥饿的现象。如果在具体的场景中写操作也多,可以修改wai
dxgzg
·
2023-11-28 05:27
C++
C++并发
c++
多线程
并发编程
C++ 读写锁之写优先
VS2005之后可以直接使用SRWLOCKlinux下使用pthread_rwlock_t本程序基于
C++11
实现读写锁,并且写优先。为什么需要写优先?防止大量读导致写一直不可用。
CAir2
·
2023-11-28 05:57
C++
随笔
c++
算法
开发语言
读写锁
rwlock
字符串与数字之间的转换
C++11
提供了若干to_string(Tvalue)函数来将T类型的数字值转换为字符串形式。
羊羊不懒
·
2023-11-28 03:57
2020蓝桥杯
笔试编程题---多线程并发
解决方案我们可以使用不同的同步机制来解决这个问题,以下是使用互斥锁、条件变量、信号量和
自旋锁
的示例。互斥锁互斥锁是最常见的同步机制之一,通过锁的机制,确保在任意时刻只有一个线程可以访问共享资源。
jkxer
·
2023-11-27 23:38
笔试
c语言
面试
笔记
【C++】多线程编程一(初识并发和多线程)
目录一、并发和并行的概念1.并发2.并行3.并发和并行的区别二、并发的途径多进程并发多线程并发三、
C++11
相关多线程编程的头文件一、并发和并行的概念1.并发并发:指同一时刻只能有一条指令执行,但是多个进程指令被快速地轮换执行
Jacky_Feng
·
2023-11-27 20:04
多线程编程
开发语言
c++
类和对象(下)
目录1.初始化列表1.1构造函数体内的赋值1.2初始化列表1.对象整体定义和成员变量定义的区别2.初始化列表的写法1.3和
C++11
的联系1.4针对初始化列表的建议2.静态成员2.1静态成员变量1.概念
C++卢瑟
·
2023-11-27 19:07
C++
初始化列表
静态成员
友元
内部类
隐式类型转换
匿名对象
C++ 在函数中定义函数
但是
C++11
发布后,在函数内简便地定义“函数”(其实是『函数对象』)成为了可能。Part.I实例下面是一个简单的样例,其中在main函数内部定义了两个『函数对象』,一个是print用来打
流浪猪头拯救地球
·
2023-11-27 18:46
#
C++
c++
函数
什么是CAS/CAS的应用/CAS的ABA问题
文章目录CAS1.什么是CAS2.CAS的应用2.1实现原子类2.2实现
自旋锁
3.CAS的ABA问题3.1什么是ABA问题3.2ABA问题引来的BUG3.3解决方案CAS1.什么是CASCAS:全称Compareandswap
是布谷阿
·
2023-11-27 17:25
Javaee
java
开发语言
CAS
[c++] insert和emplace的区别
emplace()和emplace_back()是
c++11
新引入的方法。emplace()也是在iter处插入元素,其他元素后移。
Lkites
·
2023-11-27 05:48
C/C++
c++
stl
ZLMediaKit安装配置和推拉流
一、ZLMediaKit库简介ZLMediaKit是一个基于
C++11
的高性能运营级流媒体服务框架官方写的项目特点:基于
C++11
开发,避免使用裸指针,代码稳定可靠,性能优越。
十年编程老舅
·
2023-11-27 05:38
音视频开发
音视频
音视频开发
ZLMediaKit
rtsp服务器
流媒体服务器
C++ primer笔记
序:GooleC++styleGuide;无符号与带符号线程的结果会把带符号当成无符号计算p17:带.h会使用C的标准库文件,部分IDE不支持C++程序带.h头文件可以使用nullptr代替NULL(
C+
努瓦蒂埃
·
2023-11-27 04:46
C++
c++
【
C++11
】—— 包装器
目录一、function包装器1.function包装器基本介绍2.function包装器统一类型3.function包装器的使用场景二、bind包装器一、function包装器1.function包装器基本介绍function包装器也叫作适配器。C++中的function本质是一个类模板,也是一个包装器。function的作用是将具有相同调用形式的不同类型的可调用对象进行类型统一。//funct
霄沫凡
·
2023-11-26 23:25
C++入门到进阶
开发语言
c++
【c++】可调用对象(Callable Objects)
c++11
中有一个重要的概念叫做可调用对象(CallableObjects)。
七秒钟笔记
·
2023-11-26 23:23
c++
c++11
新特性篇-using的使用
Using的使用using在
C++11
之前就有,但在
C++11
中引入了一些扩展和新的用法。
Liuuuu408
·
2023-11-26 23:51
c++
开发语言
移动语义和完美转发
移动语义和完美转发移动语义移动语义是
C++11
引入的一项特性,通过右值引用(RvalueReference)实现。
Liuuuu408
·
2023-11-26 23:50
开发语言
c++
c++11
新特性篇-列表初始化
列表初始化概述列表初始化是
C++11
引入的一个新特性。**它允许使用花括号{}来初始化变量、数组、结构体等。
Liuuuu408
·
2023-11-26 23:50
c++
算法
开发语言
c++11
新特性篇-可调用对象包装器, 绑定器
可调用对象包装器,绑定器可调用对象可调用对象是指在C++中能够像函数一样被调用的实体。它包括了多种类型的对象,使得它们能够像函数一样被调用,可以是函数、函数指针、函数对象、Lambda表达式等。在C++中,具有以下特征之一的实体都被认为是可调用对象:1.函数:常规的函数,包括全局函数和类的成员函数。voidregularFunction(intx){//...}2.函数指针:指向函数的指针。#in
Liuuuu408
·
2023-11-26 23:18
c++
算法
开发语言
C++11
的weak_ptr弱引用的智能指针
弱引用指针weak_ptr是用来监视shared_ptr的,不会使引用计数器加1,它不管理shared_ptr内部的指针,主要是为了监视shared_ptr的生命周期,更像是shared_ptr的一个助手。weak_ptr没有重载操作符*和->,因为它不共享指针,不能操作资源,主要是为了通过shared_ptr获得资源的监测权,它的构造函数不会增加引用计数,它的析构不会减少引用计数,纯粹只是作为一
铲灰
·
2023-11-26 22:03
深入应用C++11
c++
开发语言
C++11
的unique_ptr独占的智能指针
unique_ptr是一个独占型的智能指针,它不允许其他的智能指针共享其内部的指针,不允许通过赋值将一个unique_ptr赋值给另外一个unique_ptr。下面这样是错误的:unique_ptrmyPtr(newT);unique_ptrmyOtherPtr=myPtr;///错误,不能复制unique_ptr不允许复制,但可以通过函数返回给其他的unique_ptr,还可以通过std::mo
铲灰
·
2023-11-26 22:33
深入应用C++11
c++
开发语言
C++11
的shared_ptr共享的智能指针
智能指针是存储指向动态分配(堆)对象指针的类。用于生存期控制,能够确保在离开指针所在作用域时,自动正确的销毁动态分配的对象,防止内存泄漏。它的一种通用实现技术是使用引用计数。美使用它一次,内部的引用计数加1,每析构一次,内部引用计数减1,减为0时,删除所指向的堆内存。shared_ptr共享的智能指针std::shared_ptr使用引用计数,每一个shared_ptr的拷贝都指向相同的内存。在最
铲灰
·
2023-11-26 22:32
深入应用C++11
c++
开发语言
算法
C++11
的线程
线程的创建用std::thread创建线程非常简单,只需要提供线程函数或者线程对象即可,并可以同时指定线程函数的参数。下面是创建线程的示例:#include#includeusingnamespacestd;voidfunc(){cout#include#includeusingnamespacestd;voidfunc(){cout#include#include#includeusingnam
铲灰
·
2023-11-26 22:31
深入应用C++11
开发语言
c++
【
C++11
】nullptr关键字使用详解
系列文章目录
C++11
新特性使用详解-持续更新https://blog.csdn.net/xiaofeizai1116/category_12498334.html文章目录系列文章目录一、简介二、引入nullptr
小飞1116
·
2023-11-26 22:01
C++11
c++
开发语言
C++复制构造函数和移动构造函数的性能速度对比
一、对比
C++11
中引入了移动语义,用在资源频繁拷贝的地方。通过移动构造函数可以减少不必要的复制,带来性能上的提升。下面我们通过代码比较复制(拷贝)构造函数和移动构造函数的性能(速度)。
cuijiecheng2018
·
2023-11-26 22:29
C++
c++
C++拷贝构造函数与移动构造函数
在
C++11
标准之前,如果想用其它对象初始化一个同类的新对象,只能借助类中的拷贝构造函数。拷贝构造函数的实现原理是为新对象复制一份和其它对象一模一样的数据。
guobaoteacher
·
2023-11-26 22:59
C++
c++
开发语言
C++11
C++11
一切皆可列表初始化变量列表初始化自定义类型列表初始化structPoint{int_x;int_y;};intmain(){Pointp{1,2};return0;}数组列表初始化日期类列表初始化
孙鹏宇.
·
2023-11-26 21:37
c++
算法
开发语言
测量C++程序运行时间
C风格在C程序和
C++11
以前的C++程序中,测量程序运行时间一般使用clock函数和CLOCKS_PER_SEC常量,定义在中。
金色888
·
2023-11-26 20:51
C++11
新特性总结
C++11
的新特性1变量和基本类型1.1longlong类型扩展精度浮点数,10位有效数字1.2列表初始化初始化的几种不同形式,其中用花括号来初始化变量称为列表初始化;比如:inti=0;inti={0
zdy0_2004
·
2023-11-26 17:02
C++
c++
C++11
的新特性
转自:http://www.cnblogs.com/George1994/p/6684989.htmlC++11的新特性1变量和基本类型1.1longlong类型扩展精度浮点数,10位有效数字1.2列表初始化初始化的几种不同形式,其中用花括号来初始化变量称为列表初始化;比如:inti=0;inti={0};inti{0};inti(0);需要注意的是,当用于内置类型的变量时,这种初始化形式有一个重
xuchenhuics
·
2023-11-26 17:32
Modern C++ 变量声明与定义总结:auto,{},initializer_list与构造函数重载
自
C++11
/14标准推出后,C++变量声明与定义的方式也发生了一些改变,增加了一些更为现代化,并且不会引起歧义的设施。
WeiChen_PKU
·
2023-11-26 17:01
Modern
C++
《Effective Modern C++》读书笔记(1) -- 模板类型推导(template type deduction)
前段时间看了《EffectiveModernC++》这本书,收获颇多,书中讲解了许多
C++11
/14的特性,都是之前不太了解或者模糊的,看了之后茅塞顿开,强烈建议C++学习者看一看。
Xefvan
·
2023-11-26 17:01
C/C++
c++
template
Effective Modern C++:01类型推导
C++的官方钦定版本,都是以ISO标准被接受的年份命名,分别是C++98,C++03,
C++11
,C++14,C++17,C++20等。
C++11
及其后续版本统称为ModernC++。
weixin_30566111
·
2023-11-26 17:01
c/c++
数据结构与算法
c++学习之哈希
开放定址法方法二:闭散列:哈希桶/拉链法4.哈希表的封装哈希表封装后unordered_map简单封装unordered_set简单封装1.关于unordered系列关联式容器在unordered系列关联式容器是
C+
万众☆倾倒
·
2023-11-26 16:44
c++
学习
哈希算法
java中的锁(一)(Synchronized)
JAVA中的锁乐观锁悲观锁
自旋锁
synchronized(原子性、可见性、有序性、可重入性)Synchronized底层原理 JAVA中的锁主要用于保障多线程中数据的一致性。
desord
·
2023-11-26 09:18
笔记
java
synchronized原理和优化过程
1.3有序性1.4可重入二、synchronized的用法2.1修饰方法修饰静态方法2.2修饰代码块三、synchronized的特点四、synchronized加锁的工作过程4.1偏向锁4.2轻量级锁(
自旋锁
陌上 烟雨齐
·
2023-11-26 09:17
学习
笔记
jvm
经验分享
Java多线程进阶:锁策略、CAS和Synchronized的精髓解析与优化
目录1.锁策略乐观锁和悲观锁读写锁重量级锁和轻量级锁
自旋锁
和挂起等待锁公平锁和非公平锁可重入锁和不可重入锁CAS什么是CAS?CAS是怎么实现的CAS有哪些应用?
马可波罗.
·
2023-11-26 09:15
JavaEE
多线程
java
jvm
开发语言
后端
锁策略以及CAS和Synchronized的优化过程
目录锁策略(lockingstrategy)乐观锁/悲观锁悲观锁:乐观锁:读写锁(readers-writelock)重量级锁VS轻量级锁
自旋锁
(SpinLock)可重入锁VS不可重入锁synchronized
Lzm_0.0
·
2023-11-26 09:15
多线程
java技术
锁
java
jvm
synchronized特点, 加锁过程, 优化操作
(自适应)实现轻量级锁的时候大概率用到的
自旋锁
策略是一种不公平锁是一种可重入锁不是读写锁2.加锁过程代码中写了一个synchronized之后,可能会产生
是布谷阿
·
2023-11-26 09:11
Javaee
开发语言
java
C发展史: K&R C/C89/C99/C11 以及 C++发展史: C++98/C++03/
C++11
C语言的发展阶段C语言之所以命名为C,是因为C语言源自KenThompson发明的B语言,而B语言则源自BCPL语言。1967年,剑桥大学的MartinRichards对CPL语言进行了简化,于是产生了BCPL(BasicCombinedProgrammingLanguage)语言。20世纪60年代,美国AT&T公司贝尔实验室(AT&TBellLaboratory)的研究员KenThompson闲
牛奶加啡咖
·
2023-11-26 03:26
C/C++基础学
C++
C++模板知识小结
模板的知识点通常会涉及到模板的基本概念、模板的使用、模板元编程和一些与模板相关的
C++11
及以后的新特性。
ArcherZTL
·
2023-11-26 02:56
c++
1024程序员节
C++之unordered_map/set的使用
提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log2N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想.最好的查询是,进行很少的比较次数就能够将元素找到,因此在
C+
萤火夜
·
2023-11-25 22:54
c++
开发语言
[
C++11
]析构函数中std::thread::join()卡住无法退出
join()卡住分析直接原因:与mainthread退出时候发生死锁。main结束时候-->CRTlocktable.lock-->~-->join等待其他线程退出其他线程结束时候->等待main释放CRTlocktable.lock-->与main线程死锁上面的问题在vs2015中不存在了。其实是输出log导致的。比较奇怪线程函数中加入log输出为什么会导致std::thread::join()
文森88
·
2023-11-25 20:42
语言基础
线程
C++进阶 —— 列表初始化(
C++11
新特性)
列表初始化二,类列表初始化三,类模板列表初始化库模板初始化列表实现模拟模板初始化列表实现在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为
C+
挨代码
·
2023-11-25 07:05
#
C++
编程语言
c++
C++列表初始化
structPoint{int_x;int_y;};intmain(){intarray1[]={1,2,3,4,5};intarray2[5]={0};Pointp={1,2};return0;}而
C+
limou3434
·
2023-11-25 07:33
C++学习笔记
c++
开发语言
从
自旋锁
、睡眠锁、读写锁到 Linux RCU 机制讲解
共享数据结构的一致性(为什么要做锁?)对于shareddatastructure,需要保证读写的criticalsection时具备consistency,特别是读的时候,不希望读到一个不完整的数据或者数据结构的不完整的结构.比如一个链表在多个线程的读写过程中可能会出现的混乱的指针。单核本来就没有并行(谁需要锁?)先谈论singlecore的情况,我们只需要通过关中断就可以实现sequential
狂徒_张三
·
2023-11-25 04:06
CCCCCCC指针CCCCC
程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,
C++11
中引入了智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(
lusic01
·
2023-11-24 22:20
java
jvm
开发语言
Java 多线程之 CAS(Compare and Set),实现无锁优化,
自旋锁
/乐观锁
文章目录一、概述二、JDK的Unsafe类三、ABA问题一、概述CAS(CompareandSwap)是一种并发编程中的原子操作(synchronized也使用了CAS),用于实现多线程环境下的同步和数据共享。CAS提供了一种高效的并发控制机制,可以避免传统锁机制的开销和问题。CAS操作包括三个操作数:内存位置(通常是共享的变量)、旧的预期值和新的值。CAS操作会先比较内存位置上的值与旧的预期值是
QIFU
·
2023-11-24 20:06
#
Java
多线程
java
开发语言
多线程
4.并发中的各种锁概念
目录概述锁分类按上锁方式划分按特性划分悲观锁/乐观锁重入锁/不可重入锁公平锁/非公平锁独享锁/共享锁其它
自旋锁
分段锁无锁/偏向锁/轻量级锁/重量级锁结束概述java锁分类,虽是概念,很常见。
流月up
·
2023-11-24 18:08
并发编程
并发
各种锁概念
总结
C++进阶篇5-哈希
最优的查询是,进行很少的比较次数就能够将元素找到,因此在
C++11
中,STL又提供了4个unordered系列的关联式容器(unordered_set/unordered_multiset/u
竹下为生
·
2023-11-24 18:24
c++
哈希算法
开发语言
C++11
智能指针shared_ptr,weak_ptr以及循环引用的问题
1.智能指针通常内存管理中存在以下问题:重复析构(释放)同一块内存导致程序运行崩溃例如,如果类中有指针成员,浅拷贝造成两个对象的指针成员指向同一个内存。当程序运行结束,一块内存被析构了两次。有些资源的内存被释放,但是其指针并未被修改指向。voidtest(){int*dp=newint[10];deletedp[];//忘记添加dp=nullptr;}上面这种情况导致后续万一在该函数使用了dp指针
来自比邻星
·
2023-11-24 16:53
C++
c++
c语言
智能指针
循环引用
上一页
16
17
18
19
20
21
22
23
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他