
C++ 11
mqdChalali
热爱生活 热爱编程技术
展开
-
C++ 安全释放模板
#ifndef _SAFE_DELETE_H_#define _SAFE_DELETE_H_namespace safe_delete{ template void SafeDelete(T *&t){ if(t) { delete t; t = nullptr; } } te原创 2016-12-13 15:44:24 · 627 阅读 · 0 评论 -
简单的工作线程实现
源码链接:https://github.com/SaberMqd/naive/blob/master/include/naive/work_thread/work_thread.h原理:new thread( //开启一个线程 while(true){ //无限循环 wait(task) 等待任务 if(ove...原创 2018-09-03 10:47:01 · 584 阅读 · 0 评论 -
读写安全的ringobjbuffer。 可用于做简单的任务队列。
源码地址:https://github.com/SaberMqd/naive/blob/master/include/naive/ring_object_buffer.h需要C++11支持。#ifndef _NAIVE_RING_OBJECT_BUF_H_#define _NAIVE_RING_OBJECT_BUF_H_#include <cstdint>#inclu...原创 2018-09-03 10:34:55 · 293 阅读 · 0 评论 -
ringbuf
读写安全的环状buffer。源码链接:https://github.com/SaberMqd/naive/blob/master/include/naive/ring_buffer.h#ifndef _NAIVE_RINGBUF_H_#define _NAIVE_RINGBUF_H_#include <cstring>#include <cstdint>...原创 2018-09-03 10:31:46 · 334 阅读 · 0 评论 -
更安全的std::condition_variable
原生std::condition_variable的notify() 和 wait()有以下特性:1. 仅支持简单的消息等待和消息发送。2. 当notify()后于调用wait()的时候,消息会丢失,wait()阻塞。3. 当wait()接收到一次notify()之后,就再也不会阻塞。 由于我们的业务所需。实现以下功能:1. 当notify()后于调用wait()的时候,...原创 2018-09-03 10:16:38 · 260 阅读 · 0 评论 -
C/C++跨平台的的预编译宏
https://www.cnblogs.com/foohack/p/5013272.html转载 2018-03-20 15:21:06 · 620 阅读 · 0 评论 -
Google/Mock
本文引用自http://www.tuicool.com/articles/n26rMvy对于 c++ 来说写单元测试和 mock 框架不是一件容易的事情。还好, Google 为我们搭建了一个出色的单元测试和 mock 框架。网上的例子很多都过多强调概念,本文用一个简单的例子让大家对于什么是 gtest 和 gmock 让大家有一个直观的了解,让大家很快上手,就像写 hello word转载 2017-01-19 11:00:58 · 605 阅读 · 0 评论 -
Google/gtest
简介:gtest是一个跨平台(Liunx、Mac OS X、Windows、Cygwin、Windows CE and Symbian)的C++测试框架,有google公司发布。gtest测试框架是在不同平台上为编写C++测试而生成的。编译:下载代码:https://github.com/google/googletestwindows:在googletes原创 2017-01-19 11:00:15 · 516 阅读 · 0 评论 -
Google/glog
glog简介:google 出的一个C++轻量级日志库,支持以下功能:◆ 参数设置,以命令行参数的方式设置标志参数来控制日志记录行为;◆ 严重性分级,根据日志严重性分级记录日志;◆ 可有条件地记录日志信息;◆ 条件中止程序。丰富的条件判定宏,可预设程序终止条件;◆ 异常信号处理。程序异常情况,可自定义异常处理过程;◆ 支持debug功能;◆ 自定义日志信息;原创 2017-01-19 10:59:38 · 750 阅读 · 0 评论 -
类成员函数作为线程参数的用法
1.传统用法: void RunThread(); std::thread* _runThread = new std::thread(std::mem_fn(&LarkVoice::RunThread), this); _runThread->detach();2.lambda用法:std::thread *_runThread = new std::thread( [=]原创 2016-12-16 10:49:44 · 791 阅读 · 0 评论 -
const和指针搭配时的作用范围
const其实就是为了保证它所描述的变量不能被修改。直接用代码说明,以下代码仅仅为了证明const和指针在一起时候的作用范围:1.*pfloat *p;p = 3;*p = (float*)3;const float* p;*p = 3; //这样不行p = new float[3];//这样可以证明const type * 是指针能原创 2016-11-25 14:10:48 · 462 阅读 · 0 评论 -
C++ 宏定义禁止复制构造函数和赋值函数
#define DISALLOW_COPY_AND_ASSIGN(TypeName) \ TypeName(const TypeName&){} \ void operator=(const TypeName&){};原创 2016-12-13 15:47:53 · 1634 阅读 · 0 评论 -
share_lock实现
C++17 才支持share_lock。低版本的需要自己实现。以下基于C++11实现。源码的地址:https://github.com/SaberMqd/naive/blob/master/include/naive/share_lock.h #ifndef _NAIVE_SHARE_LOCK_H_#define _NAIVE_SHARE_LOCK_H_#ifdef _W...原创 2018-09-03 11:00:39 · 1301 阅读 · 0 评论