
c++
文章平均质量分 77
步基
深耕音视频领域,系统架构
展开
-
cout/printf效率问题
cout或printf是调试的常用手段,客户端对性能要求通常不及服务器端,服务器生产环境,尽量避免频繁打印。否则影响性能。举例:#include <iostream>#include <time.h>using namespace std;int main(){ long sTime, eTime, timeForCout, timeForPrintf; int a[30000]; int i; for (i ...原创 2022-03-31 17:59:49 · 1112 阅读 · 0 评论 -
c++ signal中断
信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断。有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些信号是定义在 C++ 头文件 <csignal> 中。常用信号 描述 SIGABRT 程序的异常终止,如调用abort。 SIGFPE 错误的算术运算,比如除以零或导致溢出的操作。 SIGILL 检测非.原创 2022-03-31 09:54:32 · 1136 阅读 · 0 评论 -
shared_ptr的引用计数原理
指向相同资源的所有 shared_ptr 共享“引用计数管理区域”,并采用原子操作保证该区域中的引用计数值被互斥地访问。“引用计数管理区域”是指通过 new 创建的 sp_counted_impl_p<D> 或 sp_counted_impl_pd<D> 对象,在创建成功后立即由其基类指针指向它,而该基类指针被 shared_ptr 间接持有。类之间的关系为:class A{};int main(){shared_ptr<A> sp1(new A()); .原创 2022-03-24 10:47:43 · 985 阅读 · 0 评论 -
线程安全阻塞队列实现
#pragma once#include <queue>#include <mutex>#include <condition_variable>#include <atomic>template <typename T>class ThreadSafeBlockQueue{public: ThreadSafeBlockQueue(){} ~ThreadSafeBlockQueue(){}pu...原创 2022-03-21 09:32:15 · 207 阅读 · 0 评论 -
shared_ptr智能指针
没有引入shared_ptr概念之前,实例化对象new class,调用c语言malloc函数分配内存,并返回指向该内存区的指针。而引入shared_ptr模板类,多个shared_ptr对象可以指向同一片内存区,每个对象中有引用计数,当前有多少个对象共享该内存。引用计数原理:1当新的 shared_ptr 对象与指针关联时,则在其构造函数中,将与此指针关联的引用计数增加1。2当任何 shared_ptr 对象超出作用域时,则在其析构函数中,它将关联指针的引用计数减1。如果引用计数变为0...原创 2022-03-12 13:18:40 · 362 阅读 · 0 评论 -
std::function
std::function是函数模板类(是一个类);std::bind是函数模板(是一个函数);std::function,std::bind在是C++11中的新特性。包含在#include <functional> 中。实例举例:上面用std::functon定义了3个对象,每一个对象,它代表的是一种类型的函数对象。...原创 2022-03-09 09:52:10 · 667 阅读 · 0 评论 -
C++11定时器
对于windows 有SetTimer,KillTimer相关的API,本文主要考虑跨平台接口,而c++11本身没有提供现成的接口,所以需要自定义实现。定时器timer是多线程编程中经常设计到的工具类,原理如下:创建一个新线程在那个线程里等待等待指定时长后做任务这里用C++11实现了一个简单易用的定时器,包含两种模式:周期性定时任务执行单次延时任务执行timer.hpp#ifndef _TIMER_H_#define _TIMER_H_#include <function原创 2022-02-21 21:12:52 · 3197 阅读 · 0 评论 -
C++ 11用法记录
1)配合命名空间,对命名空间权限进行管理using namespace std;//释放整个命名空间到当前作用域using std::cout; //释放某个变量到当前作用域2)类型重命名作用等同typedef,但是逻辑上更直观。#include <iostream>using namespace std;#define DString std::string //! 不建议使用!typedef std::string TString; //原创 2022-01-12 17:27:55 · 139 阅读 · 0 评论 -
c++面试宝典
除了char型的数组cout<<数组名 输出内容其他的类型数组cout<<数组名 输出地址char chartest[256] = "asdhfjka";int inttest[256] = { 1, 2, 3, 4, 5, 6 };cout << chartest << endl; //字符串:asdhfjkacout << inttest; //地址:00B3F1EC————...原创 2021-05-31 15:16:40 · 2181 阅读 · 1 评论