原文:C++11实现一个自动注册的工厂

实现动机 工厂方法是最简单地创建派生类对象的方法,也是很常用的,工厂方法内部使用switch case根据不同的key去创建不同的派生类对象,下面是一个伪代码。 随着时间的流逝,消息种类越来越多,这个switch case会越来越长,我在一个开源项目中看到过一百多个case语句,显然这种简单工厂已经不堪负荷,这样的代码对于维护者来说也是一个噩梦。要消除这些长长的switch case语句是一个需要 ...

2015-12-30 21:51 9 6756 推荐指数:

查看详情

C++11实现一个有界的阻塞队列

对于一个无界的阻塞队列而言,其实现非常简单,即用一个锁(锁队列)+ 一个条件变量(判空)即可。那么对于一个有界阻塞队列而言,其队列的容量有上限,其实只要再加一个条件变量用来判断是否满即可。 综上,我们需要 mutex: 保护队列的读写操作 notEmptyCV: 条件变量,在take时 ...

Mon Aug 27 19:42:00 CST 2018 0 1095
使用C++11实现一个半同步半异步线程池

前言 C++11之前我们使用线程需要系统提供API、posix线程库或者使用boost提供的线程库,C++11后就加入了跨平台的线程类std::thread,线程同步相关类std::mutex、std::lock_guard、std::condition_variable、std ...

Sun Oct 23 16:31:00 CST 2016 0 2769
c++11 - unique_ptr的一个实现

在单位写代码没法用c++11,为了方便写代码,今天趁着空闲时间写了个unique_ptr的简单实现 测试代码 [NEWOBJ][Obj] this =00000000002C7D20 nMyMem= 100 ...

Fri Aug 26 04:30:00 CST 2016 0 2267
c++11实现一个简单的lexical_cast

  boost中有一个lexical_cast可以用统一的方式来做基本类型之间的转换,比如字符串到数字,数字到字符串,bool和字符串及数字之间的相互转换。boost::lexical_cast的用法比较简单: View Code   c++11中缺少 ...

Fri May 29 05:48:00 CST 2015 0 2802
C++11实现一个轻量级的AOP框架

AOP介绍   AOP(Aspect-Oriented Programming,面向方面编程),可以解决面向对象编程中的一些问题,是OOP的一种有益补充。面向对象编程中的继承是一种从上而下的关系,不 ...

Mon Aug 31 18:13:00 CST 2015 6 5052
c++11 闭包的实现

c++11 闭包的实现 什么是闭包 闭包有很多种定义,一种说法是,闭包是带有上下文的函数。说白了,就是有状态的函数。更直接一些,不就是个类吗?换了个名字而已。 一个函数,带上了一个状态,就变成了闭包了。那什么叫 “带上状态” 呢? 意思是这个闭包有属于自己的变量,这些个变量的值是创建闭包 ...

Mon Nov 06 03:11:00 CST 2017 1 7894
c++11 tuple实现

实现一个简易版的c++11 tuple。 我使用的编译器是gcc,codeblocks13.12自带的,哪个版本我不熟gcc也没去查。 大致看了下他家的tuple实现,多继承,tuple之上还有2个辅助类,走的是类似loki中GenScatterHierarchy的路子。1092行代码,不是盖 ...

Sat Mar 01 13:17:00 CST 2014 8 4096
C++11 自动释放锁(转)

原文转自 https://blog.csdn.net/lmb1612977696/article/details/77712170 c++11加入了很多新的特性,值得我们去探索。 先看一个例子:普通的、不能自动的释放自己的锁 借助对象的析构函数自动调用的原理 ...

Wed Nov 14 19:21:00 CST 2018 0 661
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM