自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 资源 (50)
  • 收藏
  • 关注

转载 C++安全并发访问容器元素

标准库STL的vector, deque, list等等不是线程安全的。例如 线程1正在使用迭代器(iterator)读vector,线程2正在对该vector进行插入操作,使vector重新分配内存,这样就造成线程1中的迭代器失效。多个线程读是安全的,在读的过程中,不能对容器有任何写入操作多个线程可以同时对不同的容器做写入操作。不能指望任何STL实现来解决线程难题,必须手动做同步控制.方案1 对vector进行加锁处理effective STL给出的Lock框架template<type

2021-05-31 11:22:29 869

转载 sleep(0) 与sleep(>0)区别

sleep (1) 与sleep (0)的区别与线程的优先级有关系。线程创建后,会进入线程调度队列。 线程调度队列通常按线程的优先级分成多个队列。 每个优先级都会有一个队列。sleep(1)函数的调用会使线程进入等待状态。这个时候线程上下文会被切换出去。调用sleep(0) 的时候, 如果调度器中不存在优先级 >= 该线程优先级的情况下,该线程将会继续运行。否则,线程会被放入到其优先级相应的队列尾部。也就是说我们调用sleep(0) 时 ,通常会让程序里其他线程获得更多的运行时间。...

2021-05-17 17:58:34 328

转载 无锁队列的链表实现

首先,无锁队列的实现基于原子操作CAS(_sync_vale_compare_and_swap)GCC下的CAS实现:bool __sync_bool_compare_and_swap (type *accum, type *dest, type newval){ if(*accum==*dest){ *dest=newval; return true; } return false;}type __sync_val_compare_and_swap (type *ptr,

2021-05-17 15:54:01 406

转载 基于C++ STL利用CAS原子操作封装的无锁list

在做高吞吐量的项目中,性能是必须考虑的一个重要因素。而数据同步则又是重中之重,常常需要使用到锁,但是锁的使用会造成性能下降。这个时候,CAS就大显身手了,关于CAS,这里就不再多说。直接贴我基于STL list的封装的无锁list,其他容器则类似。文件1:lockfree_list.hpp#ifndef JZ_LOCK_FREE_LIST_HPP#define JZ_LOCK_FREE_LIST_HPP #include <list> /** 说明:基于CAS封装的无锁Lis

2021-05-17 11:17:36 624

转载 内存池设计与实现

一、前言作为C++程序员,想必对于内存操作这一块是比较熟悉和操作比较频繁的;比如申请一个对象,使用new,申请一块内存使用malloc等等;但是,往往会有一些困扰烦恼着大家,主要体现在两部分:申请内存后忘记释放,造成内存泄漏内存不能循环使用,造成大量内存碎片这两个原因会影响我们程序长期平稳的运行,也有可能会导致程序的崩溃;二、内存池内存池是池化技术中的一种形式。通常我们在编写程序的时候回使用 new delete 这些关键字来向操作系统申请内存,而这样造成的后果就是每次申请内存和释放内存的时

2021-05-17 11:04:28 2396

转载 C++使用锁注意事项

锁不是万能的,有时 候使用锁会导致效率低下、造成死锁等异常情况发生;一般加锁原则: 不用锁>可重入锁>自动锁>手动锁一般情况下,使用可重入锁,避免一个线程内部自己锁住的问题。可重入锁的概念: 广义上的可重入锁指的是可重复可递归调用的锁,在外层使用锁之后,在内层仍然可以使用,并且不 发生死锁(前提得是同一个对象或者class),这样的锁就叫做可重入锁。...

2021-05-17 10:59:32 1229

原创 boost asio异步和stl异步的简单对比

boost asio异步代码#include <iostream>#include <boost/asio.hpp>#include <boost/thread.hpp>void print(const int data){ if (data == 99999) std::cout << data << std::endl;}int main(){ boost::asio::io_service io_service;

2021-05-11 11:10:12 320

转载 boost lockfree queue-boost无锁队列

例子如下:#include <iostream>#include <boost/lockfree/queue.hpp>int main(){ boost::lockfree::queue<int, boost::lockfree::fixed_sized<false> > queue(128); for (int i = 0;i < 10000;i++) queue.push(i); while (!queue.empty())

2021-05-07 17:31:01 4127 1

原创 C++11中的std::call_once

某些场景下,我们需要代码只被执行一次,比如单例类的初始化,考虑到多线程安全,需要进行加锁控制。C++11中提供的call_once可以很好的满足这种需求,使用又非常简单。头文件#include template <class Fn, class... Args> void call_once (once_flag& flag, Fn&& fn, Args&&...args);call_once保证函数fn只被执行一次,如果有多个线程

2021-05-07 09:16:12 358

原创 [C++11]std::promise介绍及使用

一、std::promise介绍std::promise 是C++11并发编程中常用的一个类,常配合std::future使用。其作用是在一个线程t1中保存一个类型typename T的值,可供相绑定的std::future对象在另一线程t2中获取。std::future 可以用来获取异步任务的结果,因此可以把它当成一种简单的线程间同步的手段。std::future 通常由某个 Provider 创建,你可以把 Provider 想象成一个异步任务的提供者,Provider 在某个线程中设置共享状态的值

2021-05-06 18:32:28 8136 3

转载 c++的Lambda表达式

测试代码如下,不加’&'参数,vs直接报错class Test{public: void fun(); int data = 1;};void Test::fun(){ [](int a) {cout << data << endl;}(123);}int main(){ Test t; t.fun(); getchar(); return 0;}报错内容如下:封闭函数“this”不能在 lambda 体中引用,除非其位于捕获列

2021-05-06 16:18:33 2885

转载 C/C++ 协程库boost.coroutine2、魅族libgo、腾讯libco、开源libaco详解

最近研究高性能C++协程,网上了解到了魅族libgo、腾讯libco、开源libaco、boost coroutine,这里记录一下。1 什么是协程协程可以很轻量的在子例程中进行切换,它由程序员进行子例程的调度(即切换)而不像线程那样需要内核参与,同时也省去了内核线程切换的开销,因为一个协程切换保留的就是函数调用栈和当前指令的寄存器,而线程切换需要陷入内核态,改变线程对象状态。 go语言就已经把协程作为基础设施提供语言级的支持,cpp这种出了名的给程序员自由的语言肯定不会提供语言级的支持。

2021-05-06 10:08:38 3012 1

nginx源码学习资料

自己的nginx源码学习资料,包含《Nginx模块开发指南》和《深入理解Nginx》等,方便初学者了解nginx设计思想以及源码

2022-02-10

gRPC-vs2017

google的开源RPC框架gRpc源码,可以使用vs2017进行编译,需要依赖Cmake可视化软件生成vs工程,操作步骤见txt文件

2022-02-08

libevent-vs2017编译

visual stdio 2017下libevent的源码编译,工程配置已经完备,支持一键编译,便于调试、深入源码分析。

2022-02-08

nginx-1.7.11-vs2013.zip

windows下vs2013的nginx工程,支持一键编译运行,方便调试nginx,对入门nginx有比较大的帮助。

2022-01-13

wireshark安装包.zip

wireshark安装包,包含1.4.1版本和3.4.9两个版本,旧版的适合入门资料的pdf学习

2021-11-20

FFmpeg_Gstreamer_Wireshark学习资料.zip

FFmpeg、Gstreamer以及Wireshark的资料合集,供自己备用。

2021-11-12

win10sdk.zip

windows下C++开发人员的开发环境,用于开发的运行环境以及某些编译依赖的库。

2021-11-01

gstreamer-1.0-devel-msvc-x86-1.19.2.zip

gstreamer的1.19.2版本的安装包,安装后即可配置完成gstreamer的运行环境。

2021-11-01

C++学习资料.rar

c++进阶学习资料,辛苦集成,不可多得。机不可失失不再来

2021-09-07

librdkafka库,支持安全认证

自己编译的librdkafka的库,支持openssl,支持用户名和密码的安全认证配置。

2021-08-25

adplus软件,用于c++代码调试

adplus软件,用于vs调试代码bug,结合pdb文件可以快速定位程序出现问题的具体代码。

2021-08-24

nginx-http-flv-demo.rar

自己在linux环境下编译的nginx服务器,加入了http-flv-module模块,支持rtmp、http-flv拉流。

2021-04-06

PointsToDistance.exe

本程序是通过2点计算距离,可以传入2点角度的经纬度,也可传入2点弧度的经纬度。点击不通按钮计算出角度/弧度的距离

2021-03-05

threadpool.rar

boost线程池,线程池可以避免线程的反复生成和销毁带来的开销,提升软件的稳定性和性能

2020-12-19

opencv3.4.rar

本资源是openv3.4版本,可直接用于vs的工程。包含include和lib相关的所有文件,添加方便快捷。

2020-08-10

ffmpeg-4.rar

本资源是ffmpeg4版本的库,包含32位和64位,包含头文件、编译后的库文件以及exe等文件构成,可以直接在vs上使用。

2020-08-10

rtmp+ngix推流.7z

本资源是windows下ngix的环境配置,可以用于rtmp推流。搭配ffmpeg的使用,可将视频文件转化成rtmp网络视频流,并在vlc上进行播放

2020-08-02

WinPacpDemo.zip

基于MFC的WinPacp的例子,可以直接运行,统计接收到的流量包,方面对数据包进行分析、监测等。通过例子了解WinPacp的接口及使用方法。

2020-06-26

Windows下RabbitMQ服务器安装.zip

本资源是windows下搭建RabbitMQ服务器,配合libRabbitMQ可以实现c++的rabbitMQ开发。安装方法见压缩包的txt文档。

2020-06-25

base64.zip

本库是c/c++的Base64库,应用于移动互联网http的密码加密部分。本库使用简单、使用轻量,使用起来非常方便。

2020-06-24

yolov5的模型参数pt文件

yolov5的模型参数pt文件

2024-09-03

深度学习AelxNet网络模型训练识别花朵例子

深度学习AelxNet网络模型训练识别花朵例子

2024-09-01

github加速器,可以解决github打开慢的问题

github加速器,可以解决github打开慢的问题

2024-08-25

redis-3.0-vs2017.zip

使用VS2017编译的redis服务器代码,可以直接运行。客户端RedisCli可以连接到服务器,实现客户端与服务器的交互。

2023-11-16

redisCliDemo.zip

VS2017的redis客户端代码,使用hiredis库实现客户端的连接和请求

2023-11-16

rtsp的流媒体服务器,windows下搭建流媒体服务器

rtsp的流媒体服务器,windows下搭建流媒体服务器

2023-11-02

yuv查看器,可以查看YUV文件

yuv查看器,可以打开yuv文件,查看图片文件

2023-10-22

boost asio性能对比分析

boost asio性能对比分析

2022-12-23

clumsy-windows网络模拟工具.7z

windows下网络环境模拟工具,可以支持特定IP地址发送的数据包的丢包、延时等功能,编译网络环境的测试

2022-11-12

ronghe-目标-pdf

1111111asdasdasdasdasas

2022-09-13

kcp-dissector-plugin-master.zip

wireshark的KCP插件,用于对KCP数据包进行分析

2022-09-01

KcpTest.zip

KCP测试程序

2022-08-30

quic.pcapng

quic数据包,用于认识quic协议

2022-08-16

VS2017-Tarscpp编译后的库

VS2017环境下TarsCPP源码编译后生成的头文件和库文件,可用来在VS2017上开发Tars工程。

2022-07-30

ffmpeg-4.2.1.tar.7z

ffmpeg源码,版本为4.2.1,可以用于编译、学习。

2022-07-17

msys2-x86_64-20200903.zip

windows下安装此软件后可以模拟Linux的环境,可以用于ffmpeg编译等

2022-07-17

vs2017_community__1464315958.1583822625.zip

此资源为VS2017安装包,方便C/C++/C#开发人员进行Windows系统下的开发,有助于软件bug分析定位。

2022-07-17

0voice_im.tar.bz2

TeamTalk源码,支持VS2017编译客户端。

2022-06-30

Redis-6.2源码调试

使用VsCode工具调试Redis-6.2的代码。代码已经编译完成,可以用VSCode打开后直接调试。需要VSCode安装C\C++的插件。

2022-05-27

microsoft pdb.rar

windows的pdb符号文件,用于adplus软件抓取崩溃文件fulldump后在VS2017上的调试,可以定位出程序崩溃。

2022-04-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除